<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-36941363</id><updated>2025-08-20T23:22:47.233-07:00</updated><category term="zend developer cloud platform sdk"/><category term="&quot;end of line&quot; java"/><category term="Enterprise2.0 zportal"/><category term="eclipse democamp telaviv zend"/><category term="eclipse flash adobe"/><category term="eclipse test framework"/><category term="facebook app development phpcloud"/><category term="git github zend sdk server"/><category term="phonegap tips javascript mobile"/><category term="phpcloud eclipse zend sdk pdt"/><category term="phpcloud zend studio cloud best practices development"/><category term="phpcloud zend webapi"/><category term="webtop webtops operating systems future roy ganor"/><category term="zend phpcloud studio developer cloud"/><category term="zend studio ajax php"/><category term="zend studio server php"/><title type='text'>Ganor&#39;s Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36941363.post-2660476854834695178</id><published>2014-04-07T09:37:00.002-07:00</published><updated>2015-09-03T05:18:14.170-07:00</updated><title type='text'>Installing Jenkins Server on Google Cloud Platform </title><content type='html'>The goal of this short post is to show how to spin a Jenkins server on Google Cloud Platform.&lt;br /&gt;
&lt;h4&gt;
Create a new instance&lt;/h4&gt;
&lt;div&gt;
This is a simple one. Browse to your Google Cloud console&amp;nbsp;&lt;a href=&quot;https://console.developers.google.com/&quot;&gt;https://console.developers.google.com&lt;/a&gt;&amp;nbsp;and create a new instance. Make sure you:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Select a small (or greater) instance type.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Select Debian as your OS.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If you have a network rule that enables TCP 8080 then use it. Otherwise, you can configure this later on to your default rule.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h4&gt;
Install Jenkins&lt;/h4&gt;
To use the Debian package repository of Jenkins, first add the key to your system:&lt;br /&gt;
&lt;pre style=&quot;background-color: black; color: white; margin: 1em; padding: 0.5em;&quot;&gt;wget -q -O - &lt;a href=&quot;http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key&quot; style=&quot;color: white;&quot;&gt;http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key&lt;/a&gt; | sudo apt-key add -
&lt;/pre&gt;
Then add the following entry in your&lt;b&gt;&amp;nbsp;&lt;tt&gt;/etc/apt/sources.list&lt;/tt&gt;:&lt;/b&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: black; color: white; margin: 1em; padding: 0.5em;&quot;&gt;deb http://pkg.jenkins-ci.org/debian binary/
&lt;/pre&gt;
Update your local package index, then finally install Jenkins:&lt;br /&gt;
&lt;pre style=&quot;background-color: black; color: white; margin: 1em; padding: 0.5em;&quot;&gt;sudo apt-get update
sudo apt-get install openjdk-7-jre
sudo update-java-alternatives --set java-1.7.0-openjdk-amd64
sudo apt-get install jenkins&lt;/pre&gt;
&lt;h4&gt;
Configure the default network rule&lt;/h4&gt;
&lt;div&gt;
In Google Cloud Console go to your project and select Compute Engine | Networks | Firewall rules. Create a new rule. Include tcp:80,8080 to your &quot;Allowed Protocols or Ports&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That&#39;s it! Browse to your instance external IP and concatenate :8080.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
&amp;nbsp;&lt;/h4&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/2660476854834695178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/2660476854834695178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/2660476854834695178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/2660476854834695178'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2014/04/installing-jenkins-server-on-google.html' title='Installing Jenkins Server on Google Cloud Platform '/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-1553920334251159873</id><published>2012-11-27T08:09:00.000-08:00</published><updated>2012-12-11T12:04:19.798-08:00</updated><title type='text'>Building PhoneGap / Apache Cordova iOS Apps with Jenkins</title><content type='html'>While there are &lt;a href=&quot;http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://stackoverflow.com/questions/9245149/jenkins-on-os-x-xcodebuild-gives-code-sign-error&quot;&gt;posts&lt;/a&gt; related to Jenkins and PhoneGap, I couldn&#39;t find a complete, up-to-date, &#39;step by step&#39; guides that show how to setup continuous integration builds for your team.&lt;br /&gt;
&lt;br /&gt;
I wanted to share my experience with both tools, but first let&#39;s start with some assumptions and requirements:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;As of today the most updated development environment version is XCode 4.5 w/ iOS 6.0. It is highly&amp;nbsp;recommended&amp;nbsp;to update to the latest and greatest version so things work properly.&lt;/li&gt;
&lt;li&gt;I used the latest Jenkins which is downloadable from its&amp;nbsp;&lt;a href=&quot;http://mirrors.jenkins-ci.org/osx/latest&quot;&gt;download site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;After installing Jenkins, I used this &lt;a href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin&quot;&gt;cool xcode-plugin&lt;/a&gt; that really helps to get things done. You can install it by going to Manage Jenkins | Manage Plugins | Available | Search for xcode and install it.&lt;/li&gt;
&lt;li&gt;As an optional step you should also install the &lt;a href=&quot;https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin&quot;&gt;Amazon S3 plugin&lt;/a&gt; to push the &quot;Enterprise Site&quot; artifacts (the IPA and PLIST files) so it can be available to others in your team.&lt;/li&gt;
&lt;li&gt;You must have Apple&#39;s&amp;nbsp;&lt;a href=&quot;https://developer.apple.com/programs/ios/&quot;&gt;iOS Developer Program&lt;/a&gt; account. Make sure you create a Certificate and Distribution (Adhoc) provisioning profile using the portal. Start by creating a certificate for Distribution (&lt;i&gt;remember to do this through the &quot;Distribution&quot; tab&lt;/i&gt;) and continue with adding the devices you want to test with. Finally create a provisioning profile (&lt;i&gt;remember to do this in the &quot;Distribution&quot; tab&lt;/i&gt;). If you have done things correctly you should have a certificate in your default keychain.&amp;nbsp;Here is what I see:&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2xJXdxcgK9TTCE5eRgueiXhyphenhyphenFFATLi522q6JFV2rYylWBQX6V-GZ_fc3iBAaLj_lMbkm7Fk-4GfJgIS3Q6de0M1s8OzFSSBSCzkaFOUsyQKwr2SOdDrRqDuqn_gunmzhrEuEz/s1600/Screen+Shot+2012-11-26+at+4.14.22+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2xJXdxcgK9TTCE5eRgueiXhyphenhyphenFFATLi522q6JFV2rYylWBQX6V-GZ_fc3iBAaLj_lMbkm7Fk-4GfJgIS3Q6de0M1s8OzFSSBSCzkaFOUsyQKwr2SOdDrRqDuqn_gunmzhrEuEz/s400/Screen+Shot+2012-11-26+at+4.14.22+PM.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;(1) Apple&#39;s Certificate (2) Your Certificate (3) Your private key&lt;br /&gt;
Make sure you have something like this in your user&#39;s Keychain&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;Another assumption is that you use the latest version of Phonegap (currently v2.2) which provides handy &lt;a href=&quot;http://docs.phonegap.com/en/2.2.0/guide_command-line_index.md.html&quot;&gt;command line tools&lt;/a&gt; to create iOS application shell. &amp;nbsp;I used:&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: Courier New, Courier, monospace;&quot;&gt;./path/to/cordova-ios/bin/&lt;b&gt;create&lt;/b&gt; /path/to/my_project com.example.my_project&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
Now before we start the real fun, let&#39;s explain a couple of&amp;nbsp;caveats for working with Jenkins in this context:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Jenkins jobs run as the jenkins user (created by the Jenkins installer), your jenkins user doesn&#39;t really know about the Keychain that you have created. We will create a different Keychain accessible by your jenkins user.&lt;/li&gt;
&lt;li&gt;Same goes to provisioning profiles, we will need to install the distribution provisioning profile&amp;nbsp;for the jenkins user.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Code Signing for development and distribution is done with different provisioning profiles, from time to time, developers&amp;nbsp;override the project settings so the profile&amp;nbsp;(the Xcode UI really sucks!)&amp;nbsp;&amp;nbsp;is configured wrongly.&amp;nbsp;For this end we will add a script that makes sure we use the right profile.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
Now let&#39;s start the real fun:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Export the user&#39;s Keychain (usually under&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt; /Users/&lt;user&gt;/Library/Keychains&lt;/user&gt;&lt;/span&gt;) and import it into new Jenkins&#39; Keychain (usually under &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/Users/Shared/Jenkins/Library/Keychains&lt;/span&gt;):&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;user$ &lt;b&gt;security default-keychain&lt;/b&gt;&lt;span style=&quot;color: magenta;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;# retrieve the user&#39;s default keychain&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;user$ &lt;b&gt;security export -k &lt;/b&gt;&lt;i style=&quot;font-weight: bold;&quot;&gt;&amp;lt;user-keychain&amp;gt; &lt;/i&gt;&lt;b&gt; -f pkcs12 -o &lt;/b&gt;&lt;i style=&quot;font-weight: bold;&quot;&gt;&amp;lt;output-file-name&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;user$&amp;nbsp;&lt;b style=&quot;font-weight: bold;&quot;&gt;sudo su jenkins &lt;/b&gt;&lt;span style=&quot;color: purple;&quot;&gt;# switch to jenkins account&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;jenkins$&amp;nbsp;&lt;b style=&quot;font-weight: bold;&quot;&gt;security create-keychain -P&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-weight: bold;&quot;&gt;&amp;nbsp;&lt;i&gt;&amp;lt;jenkins-keychain&amp;gt;&lt;/i&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;jenkins$&amp;nbsp;&lt;b style=&quot;font-weight: bold;&quot;&gt;security import&amp;nbsp;&lt;i&gt;&amp;lt;exported-file-name&amp;gt;&lt;/i&gt;&amp;nbsp;-k&amp;nbsp;&lt;i&gt;&amp;lt;jenkins-keychain&amp;gt; -f&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;font-weight: bold;&quot;&gt;pkcs12 -A&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;jenkins$ &lt;b style=&quot;font-weight: bold;&quot;&gt;security default-keychain -s&amp;nbsp;&lt;b&gt;&lt;i&gt;&amp;lt;jenkins-keychain&amp;gt;&lt;/i&gt;&lt;/b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Copy your distribution provisioning profile to jenkins&#39; user profiles directory&amp;nbsp;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Create a Jenkins job using the xcode plugin&lt;br /&gt;
Fetch your code from git then add a build step which executes the xcode plugin build&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4oQAqkOwe0j2Pvnj_g4_aYr-Hz5T3eqhrr3l8t8rHOJqRYqL4hi30nHJ_ft6cKfU6q6yMrRG91pfwpDaXg9VDStfCymPzaagdx7fOFDkWRP88z-nKv9s1mGvU_G4PpyPojn5R/s1600/Screen+Shot+2012-11-27+at+5.38.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;113&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4oQAqkOwe0j2Pvnj_g4_aYr-Hz5T3eqhrr3l8t8rHOJqRYqL4hi30nHJ_ft6cKfU6q6yMrRG91pfwpDaXg9VDStfCymPzaagdx7fOFDkWRP88z-nKv9s1mGvU_G4PpyPojn5R/s320/Screen+Shot+2012-11-27+at+5.38.30+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Remember that you should fill in these parameters&lt;ul&gt;
&lt;li&gt;Target&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Project directory&lt;/li&gt;
&lt;li&gt;output directory&lt;/li&gt;
&lt;li&gt;Build IPA&lt;/li&gt;
&lt;li&gt;Provisioning profile - direct to your profile&lt;/li&gt;
&lt;li&gt;Unlock the keychain and provide the Keychain and its password&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;In your job you will need to make sure that the right profile is used during the execution, I had to use some search and replace tricks. For this end I first find the provisioning profile&#39;s hash (a 28 hex-decimal hash):&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cp &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj &amp;nbsp;&lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj.bak &lt;br /&gt;
&lt;br /&gt;
sed &#39;s/PROVISIONING_PROFILE\ =\ &quot;[^\&quot;]*&quot;/PROVISIONING_PROFILE\ =\ &quot;&lt;i&gt;&amp;lt;Profile Hash&amp;gt;&lt;/i&gt;&quot;/g&#39; &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj &amp;gt; &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj.pro1&lt;br /&gt;
&lt;br /&gt;
sed &#39;s/\&quot;PROVISIONING_PROFILE\[sdk=iphoneos\*]\&quot;\ =\ &quot;[^\&quot;]*&quot;/\&quot;PROVISIONING_PROFILE\[sdk=iphoneos\*]\&quot;\ =\ &quot;&amp;lt;Profile Hash&amp;gt;&quot;/g&#39; &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj.pro1 &amp;gt; &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj.pro2&lt;br /&gt;
&lt;br /&gt;
mv &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj.pro2 &lt;i&gt;&amp;lt;/path/to/.xcodeproj&amp;gt;&lt;/i&gt;/project.pbxproj &lt;br /&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Distribute to external enterprise site - this one worth a separate post&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/1553920334251159873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/1553920334251159873' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1553920334251159873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1553920334251159873'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/11/creating-phonegap-apache-cordova-ios.html' title='Building PhoneGap / Apache Cordova iOS Apps with Jenkins'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2xJXdxcgK9TTCE5eRgueiXhyphenhyphenFFATLi522q6JFV2rYylWBQX6V-GZ_fc3iBAaLj_lMbkm7Fk-4GfJgIS3Q6de0M1s8OzFSSBSCzkaFOUsyQKwr2SOdDrRqDuqn_gunmzhrEuEz/s72-c/Screen+Shot+2012-11-26+at+4.14.22+PM.png" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3588361088522181483</id><published>2012-11-19T13:22:00.004-08:00</published><updated>2012-11-19T14:20:34.457-08:00</updated><title type='text'>REST Sniffer and Client - Working Together</title><content type='html'>A month ago I &lt;a href=&quot;http://ganoro.blogspot.com/2012/07/sniff-your-restful-api.html&quot;&gt;posted&lt;/a&gt; about &lt;a href=&quot;https://chrome.google.com/webstore/detail/rest-sniffer/ifeiedjadmeabnlahklpafjbomkcklbj&quot;&gt;REST Sniffer&lt;/a&gt;, a Chrome extension that helps with tracking REST calls. This time, I&#39;ll present a cool new feature that can help developers to detect and analyze bugs as well as support common Web apps development process integrated with&amp;nbsp;&lt;a href=&quot;https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo&quot;&gt;Advanced REST Client&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The use case is very common, you are a Web (or Mobile-Web) developer given with a bug or scenario that requires several steps to reproduce. You probably start with opening a browser and trying out these steps. After simulating it, open the network panel and investigate that it&#39;s an API issue originated from this specific scenario (data, flow, state, etc). Now starts the beautiful twist, you pinpoint this API call and detach it to an external client that can reproduce this call in a similar environment.&amp;nbsp;Let&#39;s see how it works in real life:&lt;br /&gt;
&lt;br /&gt;
First you sniff your Web App&#39;s APIs, and click the &quot;Load in REST Client&quot; button&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://sites.google.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.46.13%20PM.png?attredirects=0&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://sites.google.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.46.13%20PM.png?attredirects=0&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
This operation automatically detaches this specific API call (including its method, URL, path, parameters and headers) to the Advanced REST Client where you can review and exercise this call again and again. Ultimately, step by step debugging it in your favorite IDE.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://dc5c7524-a-62cb3a1a-s-sites.googlegroups.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.51.36%20PM.png?attachauth=ANoY7cqZbu1eaUrt0nPwQrCtXCLFMg_l6KlS1e7tLSa1NDvupRqrM3pRlnVuJrxM5hPbliz_o-HhfpRoxgofYMVb62LxfpsMnrKIwvN9vOR7yLGqoATpp4f6Qa69LOJ8jj6WeLIC9rdGx4RezToZ8bRWA65iLiNAsbAlPDH6Pkr-f3lx_VEb_2peGwRHa2H8WrcHXIBA7h83fDYfMvLG4I8FCybEoQGHApG30AuYnv-ztCMoqAM23S9uSun0ApUZ7tktrgH4f_oWZVUDK4ZvhzTs75VFit0ifdHLuOdd5-X7dBzODTHyvdc%3D&amp;amp;attredirects=0&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;139&quot; src=&quot;https://dc5c7524-a-62cb3a1a-s-sites.googlegroups.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.51.36%20PM.png?attachauth=ANoY7cqZbu1eaUrt0nPwQrCtXCLFMg_l6KlS1e7tLSa1NDvupRqrM3pRlnVuJrxM5hPbliz_o-HhfpRoxgofYMVb62LxfpsMnrKIwvN9vOR7yLGqoATpp4f6Qa69LOJ8jj6WeLIC9rdGx4RezToZ8bRWA65iLiNAsbAlPDH6Pkr-f3lx_VEb_2peGwRHa2H8WrcHXIBA7h83fDYfMvLG4I8FCybEoQGHApG30AuYnv-ztCMoqAM23S9uSun0ApUZ7tktrgH4f_oWZVUDK4ZvhzTs75VFit0ifdHLuOdd5-X7dBzODTHyvdc%3D&amp;amp;attredirects=0&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Finally Review the results in your client after resolving the issue&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://sites.google.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.52.12%20PM.png?attredirects=0&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;130&quot; src=&quot;https://sites.google.com/site/restsniffer/integration-with-advanced-rest-client/Screen%20Shot%202012-11-16%20at%203.52.12%20PM.png?attredirects=0&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Many thanks to &lt;a href=&quot;https://plus.google.com/113648393775261658002&quot;&gt;Paweł Psztyć &lt;/a&gt;the &quot;Advanced REST Client&quot; Google Chrome App creator who worked together with me on the integration and made it possible.&lt;br /&gt;
&lt;br /&gt;
If you want to read more visit &lt;a href=&quot;https://sites.google.com/site/restsniffer/integration-with-advanced-rest-client&quot;&gt;this short page&lt;/a&gt;&amp;nbsp;prepared to help with understanding the workflow in details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3588361088522181483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3588361088522181483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3588361088522181483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3588361088522181483'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/11/sniffer-and-client-working-together.html' title='REST Sniffer and Client - Working Together'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-4034710334036248947</id><published>2012-10-15T10:01:00.000-07:00</published><updated>2012-10-15T10:44:33.331-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="phonegap tips javascript mobile"/><title type='text'>7 Tips for PhoneGap (&amp;Mobile-Web) Beginners</title><content type='html'>&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;While the mobile app market continues to grow steadily, mobile app development knowledge in most companies is still immature. Most companies have already aligned their business strategies with the latest mobile-world changes and started recruiting mobile teams but haven&#39;t yet streamlined their app development processes. This problem is notable also among mobile-web app developers, where the two domains have synthesized into one platform that carries both methodologies and twists.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;Here are some tips and thoughts I&#39;ve gathered through my work with &lt;a href=&quot;http://phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt; / &lt;/span&gt;&lt;a href=&quot;http://incubator.apache.org/cordova&quot; style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;Apache Cordova&lt;/a&gt;&lt;span style=&quot;font-family: &#39;Trebuchet MS&#39;, sans-serif;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;It’s a mobile app not a web app&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;The very first thing you notice when switching from web app to mobile-web app development is that your tools and environment are quite similar. This may lead to a misconception about your target audience environment and behavior. Actually, there is little in common between a web browser user and a mobile app user. For example the &lt;a href=&quot;http://api.jquery.com/click&quot;&gt;.click() event&lt;/a&gt; has a major role in browser use but really&amp;nbsp;doesn&#39;t&amp;nbsp;fit the mobile context where users prefer to tap (touch) elements of their app interface. Technically, &quot;touchend” events are fired with no delay so they are significantly faster than “click” events.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3875382.js?file=bind_events.js&quot;&gt;&lt;/script&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Another example of a behavior that usually happens in the context of web browsers and&amp;nbsp;doesn&#39;t&amp;nbsp;make any sense in mobile apps,&amp;nbsp;is highlighting elements after a user has clicked on them. In a mobile app, you need to prevent objects from being highlighted by &lt;a href=&quot;http://css-infos.net/property/-webkit-tap-highlight-color&quot;&gt;a touch event&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3875869.js?file=tap.css&quot;&gt;&lt;/script&gt;

&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Using a fully featured engine/framework vs. your own stack of libraries&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;As in creating web or desktop apps, one should choose the right UI patterns to develop mobile apps easily. Most mobile app workflows fit into short and gamified scenarios. There are plenty of &lt;a href=&quot;https://github.com/bebraw/jswiki/wiki/Game-Engines&quot;&gt;game engines&lt;/a&gt; and &lt;a href=&quot;http://jswiki.org/mobile-frameworks.html&quot;&gt;App UI frameworks&lt;/a&gt; that can be very handy. Rather than using a fully featured framework that may limit your scenarios and put them in the wrong pattern, there is the option of using low-level libraries that solve a specific problem. This is usually better if your game or app has specific UI requirements like special animation but is less recommended if you want to build a traditional mobile-web app. Combining several libraries such as &lt;a href=&quot;http://backbonejs.org/&quot;&gt;backbone.js&lt;/a&gt; and &lt;a href=&quot;http://ricostacruz.com/jquery.transit&quot;&gt;jquery transit&lt;/a&gt; may provide a great starting point in creating a flexible interface and smooth workflows.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Responsiveness and image preloading&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;You may make the assumption that since you are working on a client-side app, there is zero-time resource loading, for example, for loading images, scripts and local data files. This is, of course, not true and may cause bad user experiences and slow response times. To solve it, there are two methods that should be taken:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Use &lt;a href=&quot;https://github.com/amdjs/amdjs-api/wiki/AMD&quot;&gt;Asynchronous Module Definition (AMD)&lt;/a&gt; to load resources and handle dependencies. One simple implementation is &lt;a href=&quot;http://requirejs.org/&quot;&gt;requirejs&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Use the sprite technique to store your images and improve the drawing time. One simple implementation is spritejs.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Usage analytics and A/B testing in the context of mobile web&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;Tracking and analyzing your users’ experience of your app is a key factor for improving your product incrementally. This also enables you to drop the MVP (most valuable product) before releasing a fully featured mobile app. Three great examples that are already adjusted to the mobile app world are &lt;a href=&quot;http://www.google.com/analytics&quot;&gt;Google Analytics&lt;/a&gt;, &lt;a href=&quot;https://mixpanel.com/&quot;&gt;Mixpanel&lt;/a&gt; and &lt;a href=&quot;http://www.kissmetrics.com/&quot;&gt;KISSmetrics&lt;/a&gt;. Another technique that should help with improving your product incrementally is AB testing. This allows you to switch the content or view of your mobile app to show how your users consume it. For example, you can reorder the main menu items to see how many people get to the goal of selecting an option that you want them to select (purchasing your app, downloading more content, etc.).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Different platforms, same conventions? customization?&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;If you target several mobile platforms, it’s a bit naïve to think that your app is going behave in an identical manner on all platforms. This may lead to the fact that you will need to customize your app according to the target platform it is running on. Another factor is that if you use plain Apache Cordova (rather than the Phonegap build) you will need to customize several platform-dependent settings on your own. For example, if you want to hide the status bar when running your app, in iOS you will need to &lt;a href=&quot;http://www.herusetiawan.com/2011/08/how-to-hide-status-bar-in-xcode-4&quot;&gt;tweak Info.plist &lt;/a&gt;with the key field “UIStatusBarHidden” and the value “YES”. In Android it’s done differently by &lt;a href=&quot;http://stackoverflow.com/questions/8273186/android-show-hide-status-bar-power-bar&quot;&gt;tweaking the app’s manifest&lt;/a&gt; file.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Emulator&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;One of the key benefits to using mobile-web is the fact that you can have one emulator that fits all platforms. In other words, you don’t need a different emulator for each platform (iOS emulator, Android Emulator, etc.). &lt;a href=&quot;https://chrome.google.com/webstore/detail/ripple-emulator-beta/geelfhphabnejjhdalkjhgipohgpdnoc&quot;&gt;Chrome Ripple&lt;/a&gt;&amp;nbsp;extension&amp;nbsp;is the easiest way to do that.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;i&gt;&lt;b&gt;Continuous delivery&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;A key decision you will need to decide upfront is what method to use to build your mobile app, either independently (in-house) or using the &lt;a href=&quot;https://build.phonegap.com/&quot;&gt;Phonegap build&lt;/a&gt;. If you decide the former you can use automatic tools such as &lt;a href=&quot;http://jenkins-ci.org/&quot;&gt;Jenkins&lt;/a&gt; and &lt;a href=&quot;http://www.google.com/url?q=https%3A%2F%2Fwiki.jenkins-ci.org%2Fdisplay%2FJENKINS%2FXcode%2BPlugin&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNFQS9l3WABGb670fKD1H4Z1J92Rrg&quot;&gt;XCode Jenkins Plugin&lt;/a&gt;, which are highly recommended for easing the delivery process and streamlining the work within your team.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Trebuchet MS, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/4034710334036248947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/4034710334036248947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4034710334036248947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4034710334036248947'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/10/7-tips-for-phonegap-beginners.html' title='7 Tips for PhoneGap (&amp;Mobile-Web) Beginners'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-1272711055619038797</id><published>2012-07-30T08:17:00.002-07:00</published><updated>2012-07-30T08:17:17.228-07:00</updated><title type='text'>Sniff Your RESTful API</title><content type='html'>&lt;span style=&quot;background-color: white;&quot;&gt;Over the last couple of weeks I have been working on a project that required full understanding of its&amp;nbsp;RESTful API. During that time I was using traditional tools like my browser and an extra extension that allows me to get&amp;nbsp;acquainted&amp;nbsp;with the app&#39;s internal API. The main workflow (as a developer or a tester) was to make an action in the browser and then try to resolve what the hack happened under the hood.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;So... I wrote &lt;a href=&quot;https://chrome.google.com/webstore/detail/ifeiedjadmeabnlahklpafjbomkcklbj&quot;&gt;an extension&lt;/a&gt; that made my life easier. Basically this extension provides my browser the power being aware of a specific RESTful API that is relevant to Web application.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;If you work with &lt;/span&gt;&lt;a href=&quot;http://backbonejs.org/&quot; style=&quot;background-color: white;&quot;&gt;backbone.js&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, &lt;/span&gt;&lt;a href=&quot;http://angularjs.org/&quot; style=&quot;background-color: white;&quot;&gt;angularJS&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt; or &lt;/span&gt;&lt;a href=&quot;http://spinejs.com/&quot; style=&quot;background-color: white;&quot;&gt;spine&lt;/a&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (actually if you work with RESTful Web app) this can be highly valuable as you see the net traffic that is related to the Application.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;First the user defines the high level endpoint structure:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/5Exu21WPKY1TfeMYDnvhtyZySw_wdUoTYKPGpaMI1qGTFQBuZYY3O8uIgq5Evy41wNwn2Qfp=s640-h400-e365&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://4.bp.blogspot.com/5Exu21WPKY1TfeMYDnvhtyZySw_wdUoTYKPGpaMI1qGTFQBuZYY3O8uIgq5Evy41wNwn2Qfp=s640-h400-e365&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Then when your app is monitored this info is presented:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/7L1n-BzyIDP9sx2tbZlOw332EY1Bqji8r9xAlJwqSfAt-7NT86Sw8XZ-z6Kohpu78pVrH04=s640-h400-e365&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://2.bp.blogspot.com/7L1n-BzyIDP9sx2tbZlOw332EY1Bqji8r9xAlJwqSfAt-7NT86Sw8XZ-z6Kohpu78pVrH04=s640-h400-e365&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/L3YsPlw088vOOVnK6gUYyGeQb8DyrVZFk08izDYAOarYsbgDmIv19539saBAnW8mx1HGEjgv=s640-h400-e365&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://2.bp.blogspot.com/L3YsPlw088vOOVnK6gUYyGeQb8DyrVZFk08izDYAOarYsbgDmIv19539saBAnW8mx1HGEjgv=s640-h400-e365&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Since it&#39;s an open source &lt;a href=&quot;https://github.com/ganoro/chrome-api-sniffer&quot;&gt;Github&lt;/a&gt; project, feel free to contribute and / or send pull requests.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/1272711055619038797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/1272711055619038797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1272711055619038797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1272711055619038797'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/07/sniff-your-restful-api.html' title='Sniff Your RESTful API'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/5Exu21WPKY1TfeMYDnvhtyZySw_wdUoTYKPGpaMI1qGTFQBuZYY3O8uIgq5Evy41wNwn2Qfp=s72-h400-c-e365" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-8536478100796146822</id><published>2012-02-19T04:02:00.000-08:00</published><updated>2012-02-19T04:02:50.796-08:00</updated><title type='text'>if-ify, for-ify, foreach-ify and func-ify</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
A common &lt;a href=&quot;http://goo.gl/RKUoU&quot; target=&quot;_blank&quot;&gt;question&lt;/a&gt;&amp;nbsp;among developers is how to surround the current selection in the editor with a parent statement. For example if you start coding a statement that validates an expression and then want to iterate over an array of expressions and do the same to all its elements.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
For this end &lt;a href=&quot;http://eclipse.org/&quot; target=&quot;_blank&quot;&gt;Eclipse&lt;/a&gt;&amp;nbsp;templates provide two variables &quot;line_selection&quot; and &quot;word_selection&quot; that help you build custom selection-based wrappers.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
In this example three new templates were added to simplify this scenario:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPlS6fs3uoTIZEfXkaUxsVZKGx29NilV2IiCIa1IV4ADgvZ1yynWwNY6fkmqhw3k-ODAz_meZefFdL-CbAzIVtfFjUQZ3UbI9heHMT9Ml3G_x6hX3Wu8rpqSxzxSL2QCsiT_Li/s640/foreachify.png&quot; width=&quot;620&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
You can import these templates (xml below) to your IDE via &lt;b&gt;Preferences&lt;/b&gt; &amp;gt; &lt;b&gt;PHP&lt;/b&gt; &amp;gt; &lt;b&gt;Editor&lt;/b&gt; &amp;gt; &lt;b&gt;Templates&lt;/b&gt; &amp;gt; &lt;b&gt;Import...&lt;/b&gt;&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1862950.js?file=template.xml&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/8536478100796146822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/8536478100796146822' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8536478100796146822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8536478100796146822'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/02/if-ify-for-ify-foreach-ify-and-func-ify.html' title='if-ify, for-ify, foreach-ify and func-ify'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPlS6fs3uoTIZEfXkaUxsVZKGx29NilV2IiCIa1IV4ADgvZ1yynWwNY6fkmqhw3k-ODAz_meZefFdL-CbAzIVtfFjUQZ3UbI9heHMT9Ml3G_x6hX3Wu8rpqSxzxSL2QCsiT_Li/s72-c/foreachify.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-7775158270730858284</id><published>2012-02-01T23:36:00.000-08:00</published><updated>2012-02-03T22:55:46.602-08:00</updated><title type='text'>How My Wife Drives the Technology World</title><content type='html'>ok, maybe a better name would be &quot;My&amp;nbsp;&lt;b&gt;Cloud&lt;/b&gt;-based-&lt;b&gt;Social&lt;/b&gt;-enabled-&lt;b&gt;Service&lt;/b&gt;-oriented&amp;nbsp;&lt;b&gt;Mobile&amp;nbsp;&lt;/b&gt;Apps Experience&quot;, but that&#39;s a long name for a post :)&lt;br /&gt;
&lt;br /&gt;
It started last week as a small-talk between my wife and me about she
attending so many shifts and medical sessions. According to my wife, she usually
takes 4-5 shifts a month where the actual number is doubled (!). At that moment
I had no tools to prove my point and here comes the requirements to build a
small mobile app for her to report shifts and sessions while being able to
write short notes about it (ok, she was asking this a long
time ago). In addition she usually posts some info on Facebook during her shifts so I had to connect
these reports somehow to her Facebook account. By the end of the month she hand a report about her shifts to the managers so this if the app could also print a summary it will be a big value for her.&lt;br /&gt;
&lt;br /&gt;
Before&amp;nbsp;sharing thoughts about my experience with this app development, here is how this app looks like on Android and iOS:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdc2km4Uw3It_FdberWYI3N6_5AMTwGkBhDMyiWi0sNPtA-HD1-cIyHnSA9gkEG38PNBkKMC_fdT7axfku8S5-n9SjaYxM6QSEWA5vbA-35Plcjzcg7fAASTKwb1bkMC6RbOH/s1600/android.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdc2km4Uw3It_FdberWYI3N6_5AMTwGkBhDMyiWi0sNPtA-HD1-cIyHnSA9gkEG38PNBkKMC_fdT7axfku8S5-n9SjaYxM6QSEWA5vbA-35Plcjzcg7fAASTKwb1bkMC6RbOH/s320/android.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh14iw5KMve6pi0Kd3v0O8zHv9kbuCDafYiK5X58ZtIp1ECRvWcXIAj2TpNNCFz4ZqD5TQDOQygCzzw5KSJYmX3DvaX0YA-C4veuwXxv9LjFJSZ0ZQn1Qk6eR4UfnT4FvioOIDY/s1600/ios.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh14iw5KMve6pi0Kd3v0O8zHv9kbuCDafYiK5X58ZtIp1ECRvWcXIAj2TpNNCFz4ZqD5TQDOQygCzzw5KSJYmX3DvaX0YA-C4veuwXxv9LjFJSZ0ZQn1Qk6eR4UfnT4FvioOIDY/s320/ios.PNG&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Mobile App&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://jquerymobile.com/&quot; target=&quot;_blank&quot;&gt;jQueryMobile&lt;/a&gt;&amp;nbsp;(version&amp;nbsp;1.0) is really handy for creating cross-platform mobile interface, it provides easy to use APIs and is really covered well with lots of &lt;a href=&quot;http://jquerymobile.com/demos/1.0.1/&quot; target=&quot;_blank&quot;&gt;great examples&lt;/a&gt;. I had to use several other libraries like &lt;a href=&quot;https://github.com/allmarkedup/jQuery-URL-Parser&quot; target=&quot;_blank&quot;&gt;jQueryUrl&lt;/a&gt;, &lt;a href=&quot;http://momentjs.com/&quot;&gt;Moment.js&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://mustache.github.com/&quot; target=&quot;_blank&quot;&gt;Mustache&lt;/a&gt;, &lt;a href=&quot;http://requirejs.org/&quot; target=&quot;_blank&quot;&gt;requireJS&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/jspdf/&quot; target=&quot;_blank&quot;&gt;jsPDF&lt;/a&gt;. With so many &quot;out-of-the-box&quot; libraries it is super easy to build robust solution for client side in minutes(!!!)&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Social-enabled&lt;/b&gt;&lt;/u&gt;:&lt;br /&gt;
&lt;a href=&quot;http://developers.facebook.com/docs/reference/javascript/&quot; target=&quot;_blank&quot;&gt;Facebook JavaScript SDK&lt;/a&gt;&amp;nbsp;helped me with giving a more &quot;social look and feel&quot; after creating &amp;nbsp;a &amp;nbsp;&lt;a href=&quot;https://developers.facebook.com/apps&quot; target=&quot;_blank&quot;&gt;Facebook application&lt;/a&gt;. I also used&amp;nbsp;
&lt;a href=&quot;http://developers.facebook.com/docs/authentication/&quot; target=&quot;_blank&quot;&gt;Facebook&#39;s OAth service&lt;/a&gt;&amp;nbsp;authentication&amp;nbsp;and &lt;a href=&quot;http://developers.facebook.com/docs/opengraph/&quot; target=&quot;_blank&quot;&gt;Open Graph&lt;/a&gt; integration so users notify their friends about their activities with the &quot;My Doctor Shifts&quot; application. That&#39;s super important to engage the application users to your application!&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Service-oriented (and Data-centric)&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;a href=&quot;http://framework.zend.com/&quot; target=&quot;_blank&quot;&gt;Zend Framework&lt;/a&gt; provides nice (lightweight) models representation and the MVC was useful to create the HTML view and services.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Cloud-based&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Using &amp;nbsp;&lt;a href=&quot;http://www.phpcloud.com/&quot; target=&quot;_blank&quot;&gt;phpCloud&lt;/a&gt; was easy as always with plenty of slick workflows helping me to easily deploy my application and push updates to staging and testing targets. This way I always kept two versions that represent my Work in Progress and Done apps. I also got packages ready for deployed in case I want to deploy it to another&amp;nbsp;&lt;a href=&quot;http://www.phpcloud.com/develop&quot; target=&quot;_blank&quot;&gt;Zend Application Fabric&lt;/a&gt;&amp;nbsp;instance.&lt;br /&gt;
&lt;br /&gt;
The application is available on&amp;nbsp;&lt;a href=&quot;https://github.com/ganoro/shifts&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/7775158270730858284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/7775158270730858284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7775158270730858284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7775158270730858284'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/02/how-my-wife-drives-technology-world.html' title='How My Wife Drives the Technology World'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdc2km4Uw3It_FdberWYI3N6_5AMTwGkBhDMyiWi0sNPtA-HD1-cIyHnSA9gkEG38PNBkKMC_fdT7axfku8S5-n9SjaYxM6QSEWA5vbA-35Plcjzcg7fAASTKwb1bkMC6RbOH/s72-c/android.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-4707034055656033285</id><published>2012-01-19T05:31:00.000-08:00</published><updated>2012-01-19T06:18:04.418-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook app development phpcloud"/><title type='text'>Getting Started with Facebook App Development</title><content type='html'>Last week I was playing with &lt;a href=&quot;http://developers.facebook.com/docs/&quot; target=&quot;_blank&quot;&gt;Facebook App&lt;/a&gt;&amp;nbsp;development, getting ready to &lt;a href=&quot;http://developers.facebook.com/blog/post/634/&quot; target=&quot;_blank&quot;&gt;the Facebook announcement&lt;/a&gt;. It was quite&amp;nbsp;pleasant experience, although things could be simpler. The Facebook &lt;a href=&quot;http://developers.facebook.com/docs/opengraph/&quot; target=&quot;_blank&quot;&gt;Open Graph concept&lt;/a&gt;&amp;nbsp;gives a nice overview on what and why this all about, so that part went very smooth. When things get technical, the Facebook Developers site turns messy. That is, all topics are covered in a &#39;tutorial&#39; approach rather than an API approach like most developers are used to. Moreover, the layout of this page is&amp;nbsp;definitely&amp;nbsp;not&amp;nbsp;intuitive&amp;nbsp;as it mixes between reference and tutorial docs. That&#39;s said, the general experience was good.&lt;br /&gt;
&lt;br /&gt;
To help other developers get started with Facebook app development I created &lt;a href=&quot;https://apps.facebook.com/myphpcloud/&quot; target=&quot;_blank&quot;&gt;a nice application&lt;/a&gt; which take the reader through the steps to develop applications with phpcloud.com. It was a nice&amp;nbsp;exercise and it can really help with the development workflow.&lt;br /&gt;
&lt;br /&gt;
The topic &quot;&lt;a href=&quot;https://apps.facebook.com/myphpcloud/&quot; target=&quot;_blank&quot;&gt;Getting Started with Your Facebook App on phpcloud.com&lt;/a&gt;&quot; covers :&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Create an account on phpcloud.com&lt;/li&gt;
&lt;li&gt;Create an app on Facebook&lt;/li&gt;
&lt;li&gt;Setting up development environment&lt;/li&gt;
&lt;li&gt;Deploy a sample Facebook app to phpcloud.com&lt;/li&gt;
&lt;li&gt;Push updates to your Facebook app&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/4707034055656033285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/4707034055656033285' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4707034055656033285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4707034055656033285'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2012/01/getting-started-with-facebook-app.html' title='Getting Started with Facebook App Development'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>1</thr:total><georss:featurename>Sderot Rothschild 84-88, Tel Aviv, Israel</georss:featurename><georss:point>32.066157 34.777821</georss:point><georss:box>32.0123325 34.698857000000004 32.119981499999994 34.856785</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-7762233462938874502</id><published>2011-12-14T21:26:00.000-08:00</published><updated>2012-01-09T22:29:38.654-08:00</updated><title type='text'>A (Big) Dot Release</title><content type='html'>Although dot releases don&#39;t get as much attention as major releases , this one should definitely get highlighted:
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;      &quot;Zend is pleased to announce the release of Zend Studio 9.0.1!&quot;&lt;/pre&gt;
&lt;br /&gt;
This new release focuses on improving source code editing experience, improving editor performance, smart indentation when pasting code. It also extends the code formatter so PHP comments are well structured. Working with PHPUnit made easier with the addition of smart configuration (and&amp;nbsp;bootstrap) &amp;nbsp;detection. Community plugins updates provide advanced features with Git, ZenCoding and Symfony2.&lt;br /&gt;
&lt;br /&gt;
The changes include:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Improved editor performance for multi-line statements and auto indentation scenarios&lt;/li&gt;
&lt;li&gt;Adjust indentation when pasting code&lt;/li&gt;
&lt;li&gt;New code formatter rules for PHP Comments&lt;/li&gt;
&lt;li&gt;Disable/Enable Code formatter with special @formatter:off/on tags&lt;/li&gt;
&lt;li&gt;Git history graph&lt;/li&gt;
&lt;li&gt;PHPUnit auto-detection of configuration (and&amp;nbsp;bootstrap) file&lt;/li&gt;
&lt;li&gt;Improved PHP Class creation for namespace code generation&lt;/li&gt;
&lt;li&gt;Easy installation of community plugins&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/zen-coding/&quot; target=&quot;_blank&quot;&gt;ZenCoding&lt;/a&gt; and &lt;a href=&quot;http://symfony.dubture.com/&quot; target=&quot;_blank&quot;&gt;Symfony2 and Twig&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Various bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Read &lt;a href=&quot;http://static.zend.com/topics/Zend-Studio-9-0-1-Release-Notes.txt&quot; target=&quot;_blank&quot;&gt;more about&amp;nbsp;this release&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://www.zend.com/studio&quot; target=&quot;_blank&quot;&gt;download Zend Studio 9.0&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/7762233462938874502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/7762233462938874502' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7762233462938874502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7762233462938874502'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/12/big-dot-release.html' title='A (Big) Dot Release'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-1824214199094444124</id><published>2011-12-05T23:43:00.001-08:00</published><updated>2011-12-07T00:46:52.090-08:00</updated><title type='text'>Rewrite Rulez!!!</title><content type='html'>While common Web frameworks provide a set of&amp;nbsp;mod_rewrite&amp;nbsp;rules in their default application, it is left to the developer to align these rules according to the Apache host configuration. For example if you use an &lt;a href=&quot;http://httpd.apache.org/docs/current/mod/mod_alias.html#alias&quot;&gt;alias&lt;/a&gt;&amp;nbsp;when setting up a &lt;a href=&quot;https://github.com/symfony/symfony&quot;&gt;Symfony&lt;/a&gt;&amp;nbsp;application then a &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritebase&quot;&gt;RewriteBase directive&lt;/a&gt; must be added to the application rules. This is a &lt;a href=&quot;http://stackoverflow.com/questions/2137492/why-is-rewritebase-neccesary-when-rewriting-url-via-htaccess&quot;&gt;common&lt;/a&gt; change that is required to keep the original list (provided by the framework) as is.&lt;br /&gt;
&lt;br /&gt;
To this end a post-deployment action can be added to fix the RewriteBase directive in the &#39;.htaccess&#39; file.&amp;nbsp;In a &lt;a href=&quot;http://ganoro.blogspot.com/2011/11/chmod-your-phpcloud-web-apps.html&quot;&gt;previous post&lt;/a&gt;, &lt;a href=&quot;http://files.zend.com/help/Zend-Server/the_xml_descriptor_file.htm&quot;&gt;application deployment scripts&lt;/a&gt; were used to help chmod application&#39;s resources. This time I am going to use deployment hooks to modify the RewriteBase directive automatically after deploying the&amp;nbsp;&lt;a href=&quot;https://github.com/ganoro/Symfony2Cloud&quot;&gt;Symfony2Cloud&lt;/a&gt;&amp;nbsp;application. &lt;br /&gt;
&lt;br /&gt;
In the &lt;a href=&quot;https://github.com/ganoro/Symfony2Cloud/blob/master/scripts/post_stage.php&quot;&gt;deployment script&lt;/a&gt; you can find this code:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;gist&quot; id=&quot;gist-1439559&quot;&gt;&lt;div class=&quot;gist-file&quot;&gt;&lt;div class=&quot;gist-data gist-syntax&quot;&gt;&lt;div class=&quot;gist-highlight&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot; id=&quot;LC1&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC2&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// get application location&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC3&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;getenv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;ZS_APPLICATION_BASE_DIR&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC5&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// modify htaccess&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC6&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$htaccess_file&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;/web/.htaccess&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC7&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$explode&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;explode&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;/&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC8&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$appname&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$explode&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sizeof&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$explode&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC9&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$content&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file_get_contents&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$htaccess_file&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC10&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$content&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;str_replace&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;&amp;lt;application-name&amp;gt;&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$content&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC11&quot;&gt;&lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$htaccess_file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$content&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;gist-meta&quot;&gt;&lt;a href=&quot;https://gist.github.com/raw/1439559/3a1f969c87f137a9df0ea1aad819ee6b652cd9c7/post_stage.php&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt;            &lt;a href=&quot;https://gist.github.com/1439559#file_post_stage.php&quot; style=&quot;color: #666666; float: right; margin-right: 10px;&quot;&gt;post_stage.php&lt;/a&gt;&lt;a href=&quot;https://gist.github.com/1439559&quot;&gt;This Gist&lt;/a&gt; brought to you by &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;
In details: The application location is used to resolve its alias. Then the alias name is used to replace the &lt;a href=&quot;https://github.com/ganoro/Symfony2Cloud/blob/master/web/.htaccess&quot;&gt;.htaccess file&lt;/a&gt;&amp;nbsp;content&amp;nbsp;so instead of &quot;&lt;span style=&quot;background-color: white; font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 11px; white-space: pre;&quot;&gt;RewriteBase /&lt;/span&gt;&lt;span style=&quot;font-family: monospace; white-space: pre;&quot;&gt;&amp;lt;application-name&lt;/span&gt;&lt;span style=&quot;font-family: monospace; white-space: pre;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 11px; white-space: pre;&quot;&gt;&lt;application-name&gt;&quot;&lt;/application-name&gt;&lt;/span&gt;&amp;nbsp;it will show up as&amp;nbsp;&quot;&lt;span style=&quot;background-color: white; font-family: &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace; font-size: 12px; line-height: 11px; white-space: pre;&quot;&gt;RewriteBase /Symfony2Cloud&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Assuming that you use Zend SDK and the following deploy command:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;zend deploy application -r git://github.com/ganoro/Symfony2Cloud.git&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Symfony2Cloud is now deployed and ready to use with this .htaccess:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&amp;lt;IfModule mod_rewrite.c&amp;gt;
 RewriteBase /Symfony2Cloud

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app_dev.php [QSA,L]
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/1824214199094444124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/1824214199094444124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1824214199094444124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1824214199094444124'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/12/rewrite-rulez.html' title='Rewrite Rulez!!!'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-8824868774558169193</id><published>2011-11-30T06:24:00.001-08:00</published><updated>2011-11-30T07:08:10.601-08:00</updated><title type='text'>Github to Zend Developer Cloud - the fast way!</title><content type='html'>In &lt;a href=&quot;http://ganoro.blogspot.com/2011/11/what-is-coming-up-from-zend.html&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://ganoro.blogspot.com/2011/10/pull-down-application-created-on.html&quot;&gt;posts&lt;/a&gt; I discussed several methods of building  Web applications using Zend Developer Cloud and github, mainly with tools like Eclipse and Zend Studio. This time, I will show off with a new feature in &lt;a href=&quot;http://code.google.com/p/zend-sdk/&quot;&gt;Zend SDK&lt;/a&gt; v0.0.22 (and up) presented by &lt;a href=&quot;http://pl.linkedin.com/in/wgalanciak&quot;&gt;Wojtek Galanciak&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
With this feature only one command line is required to deploy applications from github to Zend Developer Cloud.  Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;zend deploy application -r git://github.com/ganoro/Symfony2Cloud.git -t 0
&lt;/pre&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/ganoro/Symfony2Cloud&quot;&gt;&quot;Symfony2Cloud&quot; repository&lt;/a&gt; is hosted in &lt;a href=&quot;https://github.com/ganoro&quot;&gt;my github account&lt;/a&gt;. Target id 0 is&amp;nbsp;&lt;a href=&quot;http://royganor.my.phpcloud.com/&quot;&gt;my Zend Developer Cloud&lt;/a&gt;&amp;nbsp;container. This command makes sure that the applications is deployed into my Zend Developer Cloud container. As simple as that...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqVGAFPOmc8Nk-Kicl5BlpnSPp_R8gEcfrJSPKRb1U7lF5pIWybdAkrM-_5LcBaBH1BblLbXYyxHFCCylpXtOv5r9wiBg8Ey3GI704aOpAeI7LxvrQTWbeid1UCt5W7lTtt9S/s1600/gtz.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;107&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqVGAFPOmc8Nk-Kicl5BlpnSPp_R8gEcfrJSPKRb1U7lF5pIWybdAkrM-_5LcBaBH1BblLbXYyxHFCCylpXtOv5r9wiBg8Ey3GI704aOpAeI7LxvrQTWbeid1UCt5W7lTtt9S/s320/gtz.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/ManagingApplications#Deploying_an_Application&quot;&gt;Read more&lt;/a&gt; about this command and similar use cases with the new Zend SDK. Release notes are available &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/ReleaseNotes&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In my next posts I am going to explain about the new repository management tools, so stay tuned.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/8824868774558169193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/8824868774558169193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8824868774558169193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8824868774558169193'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/11/github-to-zend-developer-cloud-fast-way.html' title='Github to Zend Developer Cloud - the fast way!'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqVGAFPOmc8Nk-Kicl5BlpnSPp_R8gEcfrJSPKRb1U7lF5pIWybdAkrM-_5LcBaBH1BblLbXYyxHFCCylpXtOv5r9wiBg8Ey3GI704aOpAeI7LxvrQTWbeid1UCt5W7lTtt9S/s72-c/gtz.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3467004940827565375</id><published>2011-11-27T05:04:00.001-08:00</published><updated>2011-11-28T03:52:13.851-08:00</updated><title type='text'>chmod() your phpCloud Web Apps</title><content type='html'>A common feedback from developers using Web Apps on &lt;a href=&quot;http://www.phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt; is the ability to &lt;a href=&quot;http://en.wikipedia.org/wiki/Chmod&quot;&gt;chmod&lt;/a&gt;() directories for deployed applications. For example in &lt;a href=&quot;http://twitter.com/mindfulbreath&quot;&gt;Joan Ging&lt;/a&gt;&#39;s &lt;a href=&quot;http://phpcloud-symfony2.pen.io/&quot;&gt;post&lt;/a&gt;&amp;nbsp;you can notice that one needs to use external tools (like WinSCP or Zend Studio) to chmod the &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;logs&amp;nbsp;&lt;/span&gt;and &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;cache&amp;nbsp;&lt;/span&gt;directories that are used by Symfony2, otherwise these directories are write-protected and the application fails to launch.&lt;br /&gt;
&lt;br /&gt;
There are two methods to chmod application directories after the deployment stage and before launching.&lt;br /&gt;
So let&#39;s review the two alternatives, both of them&amp;nbsp;result in the same state:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Using Deployment Scripts (during deployment phases).&lt;/li&gt;
&lt;li&gt;Using Zend Studio (after the application is deployed)&lt;/li&gt;
&lt;/ol&gt;&lt;br/&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Using Deployment Scripts&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
One of the new features in phpCloud is the ability to &lt;a href=&quot;http://files.zend.com/help/Zend-Studio/a_guided_tour_to_zend_application_deployment_support.htm&quot;&gt;deliver hook scripts alongside the application&lt;/a&gt;.  There are several types of scripts for each phase in the deployment process (i.e, Staging, Activation). &lt;br /&gt;
In the following example, chmod is executed on both logs and cache directories immediately after being executed on their parents.&lt;br /&gt;
First we define the &quot;scripts&quot; directory to contain all deployment triggers. This is done as part of &lt;a href=&quot;http://files.zend.com/help/Zend-Server/the_xml_descriptor_file.htm&quot;&gt;the deployment descriptor file&lt;/a&gt; (named &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;deployment.xml&lt;/span&gt;):

&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;gist&quot; id=&quot;gist-1398043&quot;&gt;&lt;div class=&quot;gist-file&quot;&gt;&lt;div class=&quot;gist-data gist-syntax&quot;&gt;&lt;div class=&quot;gist-highlight&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot; id=&quot;LC1&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC2&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;package&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;xmlns=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;http://www.zend.com/server/deployment-descriptor/1.0&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;version=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Symfony2Cloud&lt;span class=&quot;nt&quot;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC4&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC5&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;release&amp;gt;&lt;/span&gt;1.0.0&lt;span class=&quot;nt&quot;&gt;&amp;lt;/release&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC6&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC7&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;appdir&amp;gt;&lt;/span&gt;data&lt;span class=&quot;nt&quot;&gt;&amp;lt;/appdir&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC8&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;docroot&amp;gt;&lt;/span&gt;data/web&lt;span class=&quot;nt&quot;&gt;&amp;lt;/docroot&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC9&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;nt&quot;&gt;&amp;lt;scriptsdir&amp;gt;&lt;/span&gt;&lt;b&gt;scripts&lt;/b&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/scriptsdir&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC10&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/package&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;line&quot; id=&quot;LC11&quot;&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;gist-meta&quot;&gt;&lt;a href=&quot;https://gist.github.com/raw/1398043/4e5eef91845b842f80157e68d627a003ca94dbd7/deployment.xml&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt;            &lt;a href=&quot;https://gist.github.com/1398043#file_deployment.xml&quot; style=&quot;color: #666666; float: right; margin-right: 10px;&quot;&gt;deployment.xml&lt;/a&gt;&lt;a href=&quot;https://gist.github.com/1398043&quot;&gt;This Gist&lt;/a&gt; brought to you by &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;
Then we create a post_stage.php file under this directory with this content: &lt;br /&gt;
&lt;div class=&quot;gist&quot; id=&quot;gist-1397617&quot;&gt;&lt;div class=&quot;gist-file&quot;&gt;&lt;div class=&quot;gist-data gist-syntax&quot;&gt;&lt;div class=&quot;gist-highlight&quot;&gt;&lt;pre&gt;&lt;div class=&quot;line&quot; id=&quot;LC1&quot;&gt;&lt;span class=&quot;cp&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC2&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC3&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/* @var string holds the application (absolute) path */&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC4&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;getenv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;ZS_APPLICATION_BASE_DIR&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC6&quot;&gt;&lt;span class=&quot;cm&quot;&gt;/* chmod cache and logs */&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC7&quot;&gt;&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mo&quot;&gt;0775&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC8&quot;&gt;&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;/app/&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mo&quot;&gt;0775&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC9&quot;&gt;&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;/app/cache/&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mo&quot;&gt;0775&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC10&quot;&gt;&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$appLocation&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;/app/logs/&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mo&quot;&gt;0775&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC11&quot;&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;gist-meta&quot;&gt;&lt;a href=&quot;https://gist.github.com/raw/1397617/6d83cefaf2eb41ce321d430e87e3353a375c817d/post_stage.php&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/1397617#file_post_stage.php&quot; style=&quot;color: #666666; float: right; margin-right: 10px;&quot;&gt;post_stage.php&lt;/a&gt;    &lt;a href=&quot;https://gist.github.com/1397617&quot;&gt;This Gist&lt;/a&gt; brought to you by &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;.      &lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;The complete source code for this application is available in the &lt;a href=&quot;https://github.com/ganoro/Symfony2Cloud&quot;&gt;Synfony2Cloud&lt;/a&gt; project on Github.&lt;br /&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Using Zend Studio 9.0&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
Once you deploy your application in Zend Studio, a connection to your container is created under the hood. You can view this connection and modify the directories permissions in the &lt;b&gt;Remote System&lt;/b&gt; view. 
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
1. Start by showing (or &quot;unhiding&quot;) hidden files. This allows you to browse the &quot;.app&quot; directory which holds all deployed applications. &lt;br /&gt;
Go to &lt;b&gt;Preferences &amp;gt; Remote Systems &amp;gt; Files &lt;/b&gt; and make sure &quot;Show hidden files&quot; is marked.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinW4qqGDSXbx7NzcrUmW9hTWnm5aDMOjY7pVtXsB_uTJu1RZai0kHEQ0BZT3qp9qXUnF59WrM19RKWGcZhTqrw-FBhr_4wfAJLWIrVK6DqkEwUJ7bV1FJe4n6JZQn_-VV34GdF/s1600/show.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinW4qqGDSXbx7NzcrUmW9hTWnm5aDMOjY7pVtXsB_uTJu1RZai0kHEQ0BZT3qp9qXUnF59WrM19RKWGcZhTqrw-FBhr_4wfAJLWIrVK6DqkEwUJ7bV1FJe4n6JZQn_-VV34GdF/s400/show.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
2. Browse to the application you want to chmod() by expanding the file tree in the &lt;b&gt;Remote Systems&lt;/b&gt; view&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8OuEFny4akIuR8nLQY8HxLUxLInhf_wQkyIONqPkAyE3Pnvr5xxPQTHQu3WGy3EE6BiOPitCzWwJnvmTKLROO8f8IGqCCRP9p6vIoWPIjBp9i4ZDEU8qVt_zBGaRmzOVzxIPC/s1600/connect.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8OuEFny4akIuR8nLQY8HxLUxLInhf_wQkyIONqPkAyE3Pnvr5xxPQTHQu3WGy3EE6BiOPitCzWwJnvmTKLROO8f8IGqCCRP9p6vIoWPIjBp9i4ZDEU8qVt_zBGaRmzOVzxIPC/s1600/connect.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
3. Right click on the directory and select &lt;b&gt;Properties.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
4. Select the &lt;b&gt;Permissions&lt;/b&gt; node, alter the permissions you want to allow and click &lt;b&gt;Apply.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid_aLmqHtKojteBO5Ktuz7zdqONpCGZ9eZE3knlN4xFKJsIhqLfe6hebQhDxjy8nntmxn1_p70krntrusvwfGi5doXQTUNAUAAEUFfjPjayPWYBUd_NscQjW5jMUyMAyJIUM1M/s1600/permissions.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid_aLmqHtKojteBO5Ktuz7zdqONpCGZ9eZE3knlN4xFKJsIhqLfe6hebQhDxjy8nntmxn1_p70krntrusvwfGi5doXQTUNAUAAEUFfjPjayPWYBUd_NscQjW5jMUyMAyJIUM1M/s320/permissions.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Although Alternative #2 is more flexible, I highly recommend Alternative #1 which&amp;nbsp;streamlines&amp;nbsp;the deployment phase and lets you adjust the code and create an automate deployment process.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3467004940827565375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3467004940827565375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3467004940827565375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3467004940827565375'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/11/chmod-your-phpcloud-web-apps.html' title='chmod() your phpCloud Web Apps'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinW4qqGDSXbx7NzcrUmW9hTWnm5aDMOjY7pVtXsB_uTJu1RZai0kHEQ0BZT3qp9qXUnF59WrM19RKWGcZhTqrw-FBhr_4wfAJLWIrVK6DqkEwUJ7bV1FJe4n6JZQn_-VV34GdF/s72-c/show.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-4582065074941520377</id><published>2011-11-02T08:18:00.000-07:00</published><updated>2011-11-03T04:36:54.058-07:00</updated><title type='text'>What is coming up from Zend?</title><content type='html'>If you have already heard about &lt;a href=&quot;http://phpcloud.com/&quot;&gt;phpcloud.com&lt;/a&gt; and &lt;a href=&quot;http://www.zend.com/studio&quot; target=&quot;_blank&quot;&gt;Zend Studio 9&lt;/a&gt; or just trying to grasp what new developer workflows Zend is now offering, you may find the new tutorials that the Zend documentation team have put together quite useful. These tutorials take you through end to end real world scenarios and outline what can be achieved with the new tools and platform. These tutorials include:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Building Applications on the Zend Developer Cloud (&lt;/span&gt;&lt;a href=&quot;http://files.zend.com/help/Beta/Zend_Studio_9_0/Tutorials/building_applications_on_the_zend_developer_cloud.htm&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;link&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To create GitHub and Zend Developer Cloud accounts. These will be used to maintain a project in GitHub and to deploy on Zend&#39;s cloud platform. Github is just an example, you could use other version control system such as Git, Subversion, CVS, Mercurial.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;To create a new container in the Zend Developer Cloud. The container holds your application in the cloud.&lt;/li&gt;
&lt;li&gt;To create a new project from GitHub. You will be using an existing GitHub project to create a new project in Zend Studio.&lt;/li&gt;
&lt;li&gt;To launch the application on the Zend Developer Cloud and debug it using Zend Studio.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;A Guided Tour of Zend Application Deployment Support (&lt;/span&gt;&lt;a href=&quot;http://files.zend.com/help/Beta/Zend_Studio_9_0/Tutorials/A_Guided_Tour_to_Zend_Application_Deployment_Support.htm&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;link&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To create a new project from GitHub in Zend Studio: You will be provided with an existing GitHub account and project.&lt;/li&gt;
&lt;li&gt;To work with your project&#39;s deployment.xml file: Launching a project in Zend Studio with deployment support creates a deployment.xml file. This file enables you to customize your application before the packaging process.&lt;/li&gt;
&lt;li&gt;To create a ZPK package: Packaging your application enables you to export it to other members of the working process for testing and evaluation.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Deploying Applications to Zend Server (&lt;/span&gt;&lt;a href=&quot;http://files.zend.com/help/Beta/Zend_Studio_9_0/Tutorials/deploying_applications_to_zend_server.htm&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;link&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To create an API Key. The API Key allows Zend Studio to access your server.&lt;/li&gt;
&lt;li&gt;To create a new PHP project from SVN in Zend Studio. You will be provided with an existing SVN account and project.&lt;/li&gt;
&lt;li&gt;To deploy your project on a remote Zend Server.&lt;/li&gt;
&lt;li&gt;To launch your application. After creating your application, Zend Studio enables you to run your application from within the IDE and in an internal browser&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Running Applications on a Local Zend Server (&lt;/span&gt;&lt;a href=&quot;http://files.zend.com/help/Beta/Zend_Studio_9_0/Tutorials/running_applications_on_local_zend_servers.htm&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;link&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To create a new Zend Framework project under the local server document root.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;To debug your application and modify code.&lt;/li&gt;
&lt;li&gt;To launch your application.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Customizing Zend Studio (&lt;/span&gt;&lt;a href=&quot;http://files.zend.com/help/Beta/Zend_Studio_9_0/Tutorials/customizing_and_registering_zend_studio.htm&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;link&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;To customize Zend Studio by adding and removing the plugins you want to work with. The Welcome page includes a list of available plugins, which you can add or remove from your Zend Studio.&lt;/li&gt;
&lt;li&gt;To register Zend Studio. Once Zend Studio is installed, all its features will be available for a 30 day trial. To enable full features after this period of time, you will need to register the product.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/4582065074941520377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/4582065074941520377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4582065074941520377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4582065074941520377'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/11/what-is-coming-up-from-zend.html' title='What is coming up from Zend?'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-4811588549028335179</id><published>2011-10-27T15:56:00.000-07:00</published><updated>2011-10-28T14:28:58.839-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="phpcloud eclipse zend sdk pdt"/><title type='text'>Eclipse Continues to Support PHP and Zend Developer Cloud</title><content type='html'>The last two weeks were a-m-a-z-i-n-g! We released &lt;a href=&quot;http://ganoro.blogspot.com/2011/10/test-drive-zend-developer-cloud-with.html&quot;&gt;two major pieces&lt;/a&gt; that can turn Web development as easy and obvious as &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/HelloWorldTutorial&quot;&gt;writing this hello world application&lt;/a&gt;. This time&amp;nbsp;I would like to present additional important piece that the Zend team provide today to&amp;nbsp;enable PHP and Web development&amp;nbsp;(special thanks to&amp;nbsp;&lt;a href=&quot;http://twitter.com/#!/nataliabartol&quot;&gt;@nataliabartol&lt;/a&gt;). Welcome the&amp;nbsp;&#39;Eclipse-based package by Zend&#39;. This package includes the&amp;nbsp;&lt;a href=&quot;http://eclipse.org/&quot;&gt;Eclipse Platform&lt;/a&gt; latest release (version 3.7.1, code name Indigo-SR1), the &lt;a href=&quot;http://eclipse.org/webtools/sse/&quot;&gt;Web Tools Source Editing&lt;/a&gt; plugin, the &lt;a href=&quot;http://eclipse.org/pdt&quot;&gt;PDT&lt;/a&gt; plugin (latest version) and the &lt;a href=&quot;http://zend-sdk.googlecode.com/&quot;&gt;Zend SDK&lt;/a&gt; plugin (this plugin enables&amp;nbsp;&lt;a href=&quot;http://www.phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt;). You can find the package and more information about this release &lt;a href=&quot;http://code.google.com/p/zend-sdk/downloads/list&quot;&gt;here&lt;/a&gt;. The size of this package is ~90Mb (depending on your operating system) and users need to extract the package to run the product.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOxGsdVc39WkKMi427KzHUEfO8F-czL8IGRRhLUJrFeBcxb3zX-T3ZGWnvqiFOAEhYDWqhp48fJobov8icyQWwQKGNBQmBhkIXJzKSJq6cPFGffiC293mrDi5Wh7Dgl-Bp0Wgi/s1600/eclipse-php.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOxGsdVc39WkKMi427KzHUEfO8F-czL8IGRRhLUJrFeBcxb3zX-T3ZGWnvqiFOAEhYDWqhp48fJobov8icyQWwQKGNBQmBhkIXJzKSJq6cPFGffiC293mrDi5Wh7Dgl-Bp0Wgi/s320/eclipse-php.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Zend is the provider of &lt;a href=&quot;http://www.zend.com/studio&quot;&gt;Zend Studio 9.0&lt;/a&gt; and lead the Eclipse PHP Development Tools (PDT) project as well as the Zend SDK project. This Eclipse-based product will mainly be useful for developers working with PHP and their workflow includes tasks such as PHP/HTML/Javascript/CSS sources editing, debugging and deployment of Web applications.&lt;br /&gt;
&lt;br /&gt;
The following two minutes demo shows a simple create-deploy-debug cycle enabled by this package:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/mERY_6Mujjo&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
My team will&amp;nbsp;definitely consider leveraging the Zend SDK to work with more solutions available in the market providing Integrated Development Environment (IDE) for PHP Developers such as Netbeans and &amp;nbsp;phpStorm, stay tuned!&lt;br /&gt;
&lt;br /&gt;
If you have any questions or comments, feel free to comment below.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/4811588549028335179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/4811588549028335179' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4811588549028335179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/4811588549028335179'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/eclipse-and-others-to-enables-zend.html' title='Eclipse Continues to Support PHP and Zend Developer Cloud'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOxGsdVc39WkKMi427KzHUEfO8F-czL8IGRRhLUJrFeBcxb3zX-T3ZGWnvqiFOAEhYDWqhp48fJobov8icyQWwQKGNBQmBhkIXJzKSJq6cPFGffiC293mrDi5Wh7Dgl-Bp0Wgi/s72-c/eclipse-php.png" height="72" width="72"/><thr:total>3</thr:total><georss:featurename>224, Israel</georss:featurename><georss:point>31.046051 34.851612</georss:point><georss:box>29.3051945 32.324756500000007 32.7869075 37.3784675</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3055309478879950641</id><published>2011-10-25T06:10:00.000-07:00</published><updated>2011-10-26T11:03:09.669-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="phpcloud zend studio cloud best practices development"/><title type='text'>Pull Down an Application Created on phpCloud</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqfQnVZkIw2BIuWL1JfoC8u0nUqnSHTrh6KtAMBV_hl5EkjbgYf_NUwB67PYl2j3lfsPyO9KrvUX18X4pcTcboJnG8oyE-w5LenrRT67yTbu7au2_-XEuoEVvpEYRYLOyG-SGX/s1600/apps.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqfQnVZkIw2BIuWL1JfoC8u0nUqnSHTrh6KtAMBV_hl5EkjbgYf_NUwB67PYl2j3lfsPyO9KrvUX18X4pcTcboJnG8oyE-w5LenrRT67yTbu7au2_-XEuoEVvpEYRYLOyG-SGX/s320/apps.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;One of the most promising features in &lt;a href=&quot;http://phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt; will be to deploy today&#39;s most-famous Web applications directly into your container, without being required to supply the application package. The list of pre-packed applications includes projects like &lt;a href=&quot;http://drupal.org/&quot;&gt;Drupal&lt;/a&gt;, &lt;a href=&quot;http://www.joomla.org/&quot;&gt;Joomla&lt;/a&gt;, &lt;a href=&quot;http://www.magentocommerce.com/&quot;&gt;Magento&lt;/a&gt;, &lt;a href=&quot;http://wordpress.org/&quot;&gt;Wordpress&lt;/a&gt; and a &lt;a href=&quot;http://framework.zend.com/&quot;&gt;customized Zend Framework&lt;/a&gt;. Probably Zend will add more applications in the future (&lt;a href=&quot;http://getsatisfaction.com/zend_technologies&quot;&gt;want to suggest one?&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
The obvious question is, what will be the best practice for working with an already deployed application and how to pull it down to your development environment?&lt;br /&gt;
&lt;br /&gt;
As a background there are two ways for managing an already deployed project, you can select either of the following options depending on your high level development workflows and your tools (ahch, ahch, Zend Studio supports both of them). &lt;i&gt;One important note that is applied for both solutions - you don&#39;t need to deploy the project once again. Just modify the content and make sure it&#39;s updated properly in the cloud&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Clone Application via Git Repository&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
One of the Easter Eggs hidden in this already-packed deployment feature is that once an application is deployed, a git repository is created so developers can clone it and later on push their content.&amp;nbsp;Use a command line tool or any development &amp;nbsp;environment to clone the application. Then use push to upstream git action to update the actual remote application.&lt;br /&gt;
&lt;br /&gt;
To&amp;nbsp;retrieve&amp;nbsp;the application Git Repository, go to you container overview page:&lt;br /&gt;
https://my.phpcloud.com/container/&amp;lt;container-name&amp;gt;/overview and push the &quot;git access&quot; button. Use your container name and password as username and password when you make any operation with this repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPl_cRHNK8mQjsUhPcaa0YSdPA0ooLrr6umATAzER23f6mE0lONU5zBON6w4Jiexq7F1hIeHslOt85wQvGx7GYAXw1jcw3rX5X4pgfAjK1xjGhDQS1Nd9VUGbFDCLjBKMpBll/s1600/git_link.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzPl_cRHNK8mQjsUhPcaa0YSdPA0ooLrr6umATAzER23f6mE0lONU5zBON6w4Jiexq7F1hIeHslOt85wQvGx7GYAXw1jcw3rX5X4pgfAjK1xjGhDQS1Nd9VUGbFDCLjBKMpBll/s1600/git_link.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This Git repository authentication is based on secured HTTP with the following details:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;URI: the path provided by Zend Developer cloud (see above)&lt;/li&gt;
&lt;li&gt;User: container name&lt;/li&gt;
&lt;li&gt;Password: container password&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; text-decoration: underline;&quot;&gt;
&lt;div style=&quot;display: inline !important;&quot;&gt;
&lt;b&gt;&lt;u&gt;Using &lt;a href=&quot;http://code.google.com/p/zend-sdk/&quot;&gt;Zend SDK&lt;/a&gt;&lt;/u&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
You can use the latest Zend SDK to clone the code to your machine by running the &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/ManagingProjects#Clone_Project&quot;&gt;git clone command&lt;/a&gt; with your git repository parameters:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: purple;&quot;&gt;&lt;b&gt;zend&amp;nbsp;clone project&lt;/b&gt;&lt;/span&gt; -r &lt;i&gt;&amp;lt;git-repository-url&amp;gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;-u&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;user&amp;gt;&amp;nbsp;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;-p&amp;nbsp;&lt;/span&gt;&lt;i style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;password&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Using Zend Studio 9.0&lt;/u&gt;&lt;/b&gt;:&lt;br /&gt;
We are about to use a new feature added to Zend Studio in its latest release that enables you to clone a Git repository, start by &lt;b&gt;File&lt;/b&gt; | &lt;b&gt;New &lt;/b&gt;| &lt;b&gt;PHP Project from Git&lt;/b&gt;. A wizard will show up and you will need to enter the information required for this clone operation to happen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgygGtLrq42FdXgCzEYDrOXtUvz70VP4o7K_PJfaC8BQp-JsCFctw7fwECxHP7wiI6ldTEhoyR6pUfGGJUYCl4T0HtyYGpGEpY1Hh25Lr0tTV4O-ggOcjp9ky5eNrF0nW10GvJ7/s1600/pull_down_git.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgygGtLrq42FdXgCzEYDrOXtUvz70VP4o7K_PJfaC8BQp-JsCFctw7fwECxHP7wiI6ldTEhoyR6pUfGGJUYCl4T0HtyYGpGEpY1Hh25Lr0tTV4O-ggOcjp9ky5eNrF0nW10GvJ7/s320/pull_down_git.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Follow the wizard and hit &quot;Finish&quot;. Once your project is cloned, you can start a debug session right-clicking on the index.php file and selecting &quot;Debug as...&quot;, supply the full URL of the application and press OK.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeOeseyKfZeW8Nk-gNm1e6SrpFkUKZ-Pk1NdAAGAde8lYSe_P6WJf7DAeuU1XSeSPObaw1iq2u6ueSoLV0uwTA0vhdah1zso9FBckixk3mLim64u0hab0mKGIVkzPXrGWNnOZ/s1600/launch.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;103&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeOeseyKfZeW8Nk-gNm1e6SrpFkUKZ-Pk1NdAAGAde8lYSe_P6WJf7DAeuU1XSeSPObaw1iq2u6ueSoLV0uwTA0vhdah1zso9FBckixk3mLim64u0hab0mKGIVkzPXrGWNnOZ/s320/launch.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Don&#39;t forget to open the SSH Tunnel by right-clicking on its node that available in the Targets view and selecting &quot;&lt;b&gt;Open SSH Tunnel&lt;/b&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTawB6wUfClCv83mPP3lgGCyDYepCmvxTTOnPgdrIbpknnnICPnA3PpVlTH808oRAlnn1eyPrpfqRSpG-ayFSWafmwad0NIGZ5u7gkKlAYScXage_a8TfNKVy7zrHP45Z-OTk3/s1600/open_tunnel.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTawB6wUfClCv83mPP3lgGCyDYepCmvxTTOnPgdrIbpknnnICPnA3PpVlTH808oRAlnn1eyPrpfqRSpG-ayFSWafmwad0NIGZ5u7gkKlAYScXage_a8TfNKVy7zrHP45Z-OTk3/s1600/open_tunnel.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b style=&quot;font-size: x-large;&quot;&gt;Download Application via SFTP Client&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The trivial way is to use an integrated SFTP client that supports download and upload actions to the SFTP server installed on your container. Remember the following:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT117Dk4I2X4lgzZXC0xsvUAC1b0SKukD4_3aWD8WOKAGsnhvKbseMiNCS3rEiXiXJVAcYWUM1XNWNEWyjQPRhH-VW2lpIggAG-e99j5NsRcDJioHd7hCxT_EQN7xb7nfakb8R/s1600/sftp_connection.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;264&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT117Dk4I2X4lgzZXC0xsvUAC1b0SKukD4_3aWD8WOKAGsnhvKbseMiNCS3rEiXiXJVAcYWUM1XNWNEWyjQPRhH-VW2lpIggAG-e99j5NsRcDJioHd7hCxT_EQN7xb7nfakb8R/s320/sftp_connection.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;
&lt;li&gt;Authentication to the SFTP is made using the private key given the time you created the container or user. So you will need to add it to the private keys manager (in Zend Studio / Eclipse it&#39;s under Preferences &amp;gt; General &amp;gt; &amp;nbsp;Network Connections &amp;gt; SSH2. In the General Tab, add the private key file to the text field named: &quot;Private Keys&quot;. You don&#39;t have to specify a username and password as you use the private key.&lt;/li&gt;
&lt;li&gt;The application content is located under the directory named &amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;.apps/http/__default__/0/&lt;user-name&gt;&lt;i&gt;&amp;lt;user-name&lt;/i&gt;&lt;i&gt;&amp;gt;&lt;/i&gt;/1.0.0&lt;/user-name&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Pqdj5ZFoCBapLfRqOf4W92Gx0yVwBSod2-g5TyyZr0grD8pmiLE5gBi9aVZan3WIBhgJcMwpSvgS14P33Q6Fo2OpERexr05mKNGd3rul4-VZHsAeLa8EX9uRqQpRHG3Jvqr4/s1600/remote_server.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Pqdj5ZFoCBapLfRqOf4W92Gx0yVwBSod2-g5TyyZr0grD8pmiLE5gBi9aVZan3WIBhgJcMwpSvgS14P33Q6Fo2OpERexr05mKNGd3rul4-VZHsAeLa8EX9uRqQpRHG3Jvqr4/s320/remote_server.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope this tutorial helps you to configure your development environment and you take advantage of it, but if you think there is a different (better) way don&#39;t hesitate to comment below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3055309478879950641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3055309478879950641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3055309478879950641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3055309478879950641'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/pull-down-application-created-on.html' title='Pull Down an Application Created on phpCloud'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqfQnVZkIw2BIuWL1JfoC8u0nUqnSHTrh6KtAMBV_hl5EkjbgYf_NUwB67PYl2j3lfsPyO9KrvUX18X4pcTcboJnG8oyE-w5LenrRT67yTbu7au2_-XEuoEVvpEYRYLOyG-SGX/s72-c/apps.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Derech Aba Hillel 12, Ramat Gan, Israel</georss:featurename><georss:point>32.0851559 34.8041806</georss:point><georss:box>32.0834744 34.8017131 32.086837399999993 34.806648100000004</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3608096139901501839</id><published>2011-10-22T15:04:00.000-07:00</published><updated>2011-10-23T12:40:12.371-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zend phpcloud studio developer cloud"/><title type='text'>Test Drive Zend Developer Cloud with Zend Studio 9</title><content type='html'>&lt;a href=&quot;http://www.zend.com/studio&quot;&gt;Zend Studio&lt;/a&gt; and the &lt;a href=&quot;http://www.phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt; support an integration environment for projects hosted in &lt;a href=&quot;http://www.github.com/&quot;&gt;GitHub&lt;/a&gt;. This allows you use the cloud to deploy, debug and modify your Web applications hosted in GitHub &amp;nbsp;from Zend Studio.


&lt;br /&gt;
&lt;br /&gt;
This workflow includes the following tasks:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Creating accounts for GitHub and the Zend Developer Cloud&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Developing a project hosted in Github with Zend Studio and the Zend Developer Cloud&lt;/li&gt;
&lt;li&gt;Debugging your application&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Automatically updating your application in real time&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Prerequisites&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
An installed Zend Studio 9.0 (currently on beta) or above. Can be found in one of these pages:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.zend.com/en/products/studio/studio-9-beta&quot;&gt;Zend Studio 9 Beta&lt;/a&gt; page&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.zend.com/products/studio/&quot;&gt;Zend Studio&lt;/a&gt; product page&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Creating an Account for Github and the Zend Developer Cloud&lt;/span&gt;&lt;/div&gt;
In order to use GitHub and the Zend Developer Cloud, you must first set up valid accounts for both.&lt;br /&gt;
&amp;nbsp;To create a GitHub account:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Open the GitHub website at https://github.com/.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Plans, Pricing and Signup in the center of the welcome page. The Plans and Pricing page appears. 
Click Create a free account. The Signup for GitHub page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter your account details in the requested fields, and click Create an account.&amp;nbsp;Your new account page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Follow the instructions on the Github homepage and create a project and repository.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;For more information on creating a GitHub project go to help.github.com&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
To create a Zend Developer Cloud account:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir-fDNHomkGqglCdTkGYje_thRkYg2sZ3x0r4Eq4naDx8xyPFZRFVowzERGFd_BMHnPBYQnulRhn3gxY8CUZqibT0wRTE_AGoyWc4K0dMWO-tTWlm_NjOWy763sYPzS8UFhrcR/s1600/create_container.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir-fDNHomkGqglCdTkGYje_thRkYg2sZ3x0r4Eq4naDx8xyPFZRFVowzERGFd_BMHnPBYQnulRhn3gxY8CUZqibT0wRTE_AGoyWc4K0dMWO-tTWlm_NjOWy763sYPzS8UFhrcR/s320/create_container.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;
&lt;li&gt;Open the Zend Developer Cloud website at http://www.phpcloud.com/.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Login here in the top-right corner of the homepage.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click I do not have an account. 
The Create a new account page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter your account details in the requested fields, and click Register.
The Thank you for creating a Zend account page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Please answer the questions that appear on the page and click Finish.
The Log In page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter your account details, and click Log In.
The Zend Developer Cloud welcome appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Start now to begin working!
Save your Zend Developer Cloud credentials as you will need them later in this workflow.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Working with a Project hosted in Github with Zend Studio and the Zend Developer Cloud &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Once you have an existing GitHub and Zend Developer Cloud account, you can use the integration features embedded in Zend Studio and Zend Developer Cloud. You can develop, test and deploy a GitHub application on the cloud through Zend Studio.
To create a new container:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCxHC88SF7o_aXmlUqWvIx9t3UOplUXqc8aip9OdD4RXdeXC63EvfSlSpmmNVBVNkHnTZ_OlKDu5m8jOh8wMvNK1SryENBOroFppKeFGzwLMXnONGAtswyw09NoKvr9b4hHa5k/s1600/ssh_key.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;185&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCxHC88SF7o_aXmlUqWvIx9t3UOplUXqc8aip9OdD4RXdeXC63EvfSlSpmmNVBVNkHnTZ_OlKDu5m8jOh8wMvNK1SryENBOroFppKeFGzwLMXnONGAtswyw09NoKvr9b4hHa5k/s320/ssh_key.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;
&lt;li&gt;Go to the Zend Developer Cloud homepage and open your account and click Start Now on the welcome page.
The Create Container page appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter the container name and password in the relevant fields, and click Create Container. 
The SSH Keypair created window appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Download private key in PEM format.
Save the key on your machine as you will need to browse to it when connecting Zend Studio to your server.  
Your container has been created and will appear under My Containers on the homepage.&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Installing the GitHub Plugin into Zend Studio&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Zend Studio gives you the option to use only the plugins you need. For this tutorial, you will need GitHub.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwJ4e0epO_YLMwpFbXp2WgMr-CRLWsu_caOwuxlKNgpvIPsbE9ayM4fOKSvCMA1V6skESrgxsf8uurbgty1fUQouE-luDSbTlPAGBlyALpW7zMJn53yl2URbki_ccespf7wjIS/s1600/install_git.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;197&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwJ4e0epO_YLMwpFbXp2WgMr-CRLWsu_caOwuxlKNgpvIPsbE9ayM4fOKSvCMA1V6skESrgxsf8uurbgty1fUQouE-luDSbTlPAGBlyALpW7zMJn53yl2URbki_ccespf7wjIS/s320/install_git.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;
&lt;li&gt;Go to Help | Welcome to open the Zend Studio Welcome screen.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;From the plugin list on the right, mark the Git and GitHub.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;When prompted, restart Zend Studio .
When you re-open Zend Studio, the GitHub plugin is installed.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Creating a GitHub Project in Zend Studio&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To create a GitHub application in Zend Studio:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Go to File | New |PHP Project from GitHub.
The Create Project from GitHub dialog appears.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter the project name and your GitHub authentication details in the relevant fields, and click Refresh.
Your application location will appear in the Location box or in the dropdown menu.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Next to move to the Application Deployment dialog.&lt;/li&gt;
&lt;li&gt;Select Zend Application Deployment and create a new target by clicking on the PHPCloud icon . 
The Add Target dialog box appears&lt;/li&gt;
&lt;li&gt;Enter your Zend.com credentials and browse to your PEM key in the relevant fields, and click Test Connection.&lt;/li&gt;
&lt;li&gt;If no errors appear, click Finish. 
The Application Deployment section reappears with the target you added.&lt;/li&gt;
&lt;li&gt;Make sure the ‘Add Application Deployment Support’ checkbox is marked&lt;/li&gt;
&lt;li&gt;Click Finish.
Your application will opens in the Zend Studio workspace.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx5TeM8slHiO30Zgz6c1hNuQPY73O4T7nQMi2k0QjQEE_T0tdxA5pEwrg4Z9_LBEEdE7SmJO9WSRUI2v5cZ1eNeyreAcy7JOXSCCtNrfleaLwuIem3QRYJ3-DREzAD8F2wq1eJ/s1600/wizard.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx5TeM8slHiO30Zgz6c1hNuQPY73O4T7nQMi2k0QjQEE_T0tdxA5pEwrg4Z9_LBEEdE7SmJO9WSRUI2v5cZ1eNeyreAcy7JOXSCCtNrfleaLwuIem3QRYJ3-DREzAD8F2wq1eJ/s400/wizard.png&quot; width=&quot;388&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Deploying Your Application on the Zend Developer Cloud&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small; font-weight: normal;&quot;&gt;Open your project in Zend Studio.
The default file, deployment.xml, opens.&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiOt2knuzzxlpecF4CnC72Y-kUDkUn8qHtDF4yRLt5k5rZyQr3cFONloO8kqPgFkugdvRsjRudjyISNgqwewfRPZhilYCdDh1-fhUHeBd5xaHCS5WT_derU75A5tyQ_CUet7zC/s1600/control.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiOt2knuzzxlpecF4CnC72Y-kUDkUn8qHtDF4yRLt5k5rZyQr3cFONloO8kqPgFkugdvRsjRudjyISNgqwewfRPZhilYCdDh1-fhUHeBd5xaHCS5WT_derU75A5tyQ_CUet7zC/s400/control.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In the Testing area, click Launch a PHP Application
The Launch PHP Application dialog opens with the default container you defined during the project creation selected, and your application’s URL&lt;/li&gt;
&lt;li&gt;Click Finish and Yes when prompted about your container’s authenticity&lt;/li&gt;
&lt;li&gt;Your application appears in your container’s page in the Zend Developer Cloud website, and opens in Zend Studio’s internal browser. 
Keep the internal browser with your application open as you will need it to automatically update the application.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj8xON3uYN2C0XW-3GFEwKYO-5BvlE7-z7TtBaGJgeKSfIFkBa9f1LDNIbkuGzLfF-PbT2MyuvOvcuZFgpKXXRlTm2h-Fzofhgsngtb_vRQO6EsqqyoSOCXAMRucXrRNzFD3Ee/s1600/deploy.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj8xON3uYN2C0XW-3GFEwKYO-5BvlE7-z7TtBaGJgeKSfIFkBa9f1LDNIbkuGzLfF-PbT2MyuvOvcuZFgpKXXRlTm2h-Fzofhgsngtb_vRQO6EsqqyoSOCXAMRucXrRNzFD3Ee/s320/deploy.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Debugging Your Application on the Zend Developer Cloud&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Open your project in Zend Studio.
The default file, deployment.xml, opens.&lt;/li&gt;
&lt;li&gt;In the Testing area, click Launch a PHP Application in Debug Mode&lt;/li&gt;
&lt;li&gt;Your application now appears in the Debug perspective and stops at the first breakpoint.
To continue the debug click  .&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 19px; font-weight: bold;&quot;&gt;Automatically Updating Your Deployed Project in Real Time&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Zend Studio allows you to automatically update any changes you make in the source code of your application without redeploying the application from the start. Each change you make in the code will be automatically updated in your application on the server.&lt;br /&gt;
To automatically update your application:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;In the PHP Explorer view, open your projects index.phptml file by going to application| views| scripts | index| index.phptml.
The index.phptml file opens in the text editor.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Make a small textual change in the code and save the project.&lt;/li&gt;
&lt;li&gt;Go to the internal browser of your project and click the Refresh icon .
Your application updates with the changes applied.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Note: this article describes the workflow as available today for phpcloud developers. I am not sure if this will be the case in next versions, so you should get updated with the php cloud release notes.&amp;nbsp;It was written by the documentation team at Zend, if you have any comment feel free to post it below.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3608096139901501839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3608096139901501839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3608096139901501839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3608096139901501839'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/test-drive-zend-developer-cloud-with.html' title='Test Drive Zend Developer Cloud with Zend Studio 9'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir-fDNHomkGqglCdTkGYje_thRkYg2sZ3x0r4Eq4naDx8xyPFZRFVowzERGFd_BMHnPBYQnulRhn3gxY8CUZqibT0wRTE_AGoyWc4K0dMWO-tTWlm_NjOWy763sYPzS8UFhrcR/s72-c/create_container.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Derech Aba Hillel 12, Ramat Gan, Israel</georss:featurename><georss:point>32.0851559 34.8041806</georss:point><georss:box>32.0834744 34.8017131 32.086837399999993 34.806648100000004</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-8098808822510751450</id><published>2011-10-18T13:00:00.000-07:00</published><updated>2011-10-18T13:47:51.958-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="phpcloud zend webapi"/><title type='text'>First API released for phpcloud.com</title><content type='html'>In &lt;a href=&quot;http://ganoro.blogspot.com/2011/10/zend-launches-developer-cloud-sdk-to.html&quot;&gt;previous&lt;/a&gt; &lt;a href=&quot;http://ganoro.blogspot.com/2011/10/better-together-github-and-zend.html&quot;&gt;post&lt;/a&gt;, I presented the &lt;a href=&quot;http://my.phpcloud.com/&quot;&gt;Zend Developer Cloud Platform&lt;/a&gt; and some thoughts about it. It&#39;s time for me to show some pretty cool API we added for developers who want to exploit all the goodies from it. In a nutshell, the Zend Developer Cloud API enables you to authenticate, list your containers details and get a very nice information about your requests, and of course to start debugging of specific events occurred lately.&lt;br /&gt;
&lt;br /&gt;
The first implementation using this API is the &lt;a href=&quot;http://goo.gl/ZLR8C&quot;&gt;Zend Developer Cloud sniffer &lt;/a&gt; that &quot;integrates into the PHP runtime and watches for various events such as errors, failing functions, slow scripts and database errors. This allows you to debug your application during development, helping you create a better application.&quot;. And the first implementation of this API is available under EPL at the &lt;a href=&quot;http://goo.gl/rlJLx&quot;&gt;Zend SDK source code&lt;/a&gt; 
  
In more details the following API is available:
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;pre&gt;authenticate(u, p, _success, _error)&lt;/pre&gt;
Authenticate to the Zend Developer Cloud service given the username and password. Once authentication is validated, a session id is retrieved and assigned as cookie&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;list(_success, _error)&lt;/pre&gt;
Lists all containers for the signed in user&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;requestSummary(containerName, requestUid, _success, _error)&lt;/pre&gt;
Retrieve information about a particular request&#39;s events and code tracing. The requestUid identifier is provided in a cookie that is set in the response to the particular request.&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;downloadAmf(containerName, amf, _success, _error)&lt;/pre&gt;
Download the amf file specified by codetracing identifier&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;startDebug(containerName, issueId, eventGroupId, _success, _error)&lt;/pre&gt;
Start a debug session for specific issue&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/8098808822510751450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/8098808822510751450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8098808822510751450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/8098808822510751450'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/first-api-released-for-phpcloudcom.html' title='First API released for phpcloud.com'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total><georss:featurename>Santa Clara, CA, USA</georss:featurename><georss:point>37.3541079 -121.9552356</georss:point><georss:box>37.3036509 -122.0341996 37.404564900000004 -121.8762716</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-5566987114763644629</id><published>2011-10-18T09:40:00.000-07:00</published><updated>2011-10-18T14:31:04.664-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zend developer cloud platform sdk"/><title type='text'>Better Together - Github and Zend Developer Cloud</title><content type='html'>The two Cloud-based services &lt;a href=&quot;http://www.phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt; and &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt;  share some common traits. Although these services are loosely coupled, developers using one service can easily find interest in the other. For example the openness of the services to application developers world, the (so important) social&amp;nbsp;dimension&amp;nbsp;and the fact that it is just easy to use through a set of APIs and tools, make these two services fun to work with... together.&lt;br /&gt;
&lt;br /&gt;
It takes four command lines to see the value (you will need to install &lt;a href=&quot;http://code.google.com/p/zend-sdk/&quot;&gt;Zend SDK&lt;/a&gt; first):&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #6fa8dc;&quot;&gt;# clone an example &#39;hello tweet&#39; project from a github repository&lt;/span&gt;
$ &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: purple;&quot;&gt;zend clone project&lt;/span&gt;&lt;/b&gt; -r git://github.com/zendcon/hellotweet.git

&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #6fa8dc;&quot;&gt;# define a Developer Cloud container to host your application&lt;/span&gt;
$ &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: purple;&quot;&gt;zend add target&lt;/span&gt;&lt;/b&gt; -d &lt;i&gt;account-name&lt;/i&gt;:&lt;i&gt;account-password&lt;/i&gt;

&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #6fa8dc;&quot;&gt;# set working directory&lt;/span&gt;
$ &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: purple;&quot;&gt;cd &lt;/span&gt;&lt;/b&gt; hellotweet

&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #6fa8dc;&quot;&gt;# deploy the newly created application to the defined target&lt;/span&gt;
$ &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: purple;&quot;&gt;zend deploy application&lt;/span&gt;&lt;/b&gt; 
&lt;/pre&gt;
&lt;br /&gt;
The result is available as a ready to use Web application&amp;nbsp;&lt;a href=&quot;http://royganor.my.phpcloud.com/zendcon/&quot;&gt;http://royganor.my.phpcloud.com/zendcon/&lt;/a&gt;&amp;nbsp;and since I made the container public anyone can create the same container through&amp;nbsp;http://my.phpcloud.com/container/create/snapshot/royganor-snapshot-20111018054539&lt;br /&gt;
&lt;br /&gt;
But there are more similarities, let&#39;s review some of them:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Identities are open and visible between developers&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwUQ2u_jRnReScRzWtmrE1WU8VvQoNAKPn2Q4jNjzHFibovrboyUeWvhTqiGP9wxz7sP3BCva7_JtGukJyUCfohhCokSi_FeGbbU5TTh6GClJm3Xe6FqcvftV7rQ2S2I_Y5Te2/s1600/zc1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;59&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwUQ2u_jRnReScRzWtmrE1WU8VvQoNAKPn2Q4jNjzHFibovrboyUeWvhTqiGP9wxz7sP3BCva7_JtGukJyUCfohhCokSi_FeGbbU5TTh6GClJm3Xe6FqcvftV7rQ2S2I_Y5Te2/s320/zc1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSaLJUneagglX9FDh260u5lfZrdZfFNL8iqHuLOzXVA39O666wHdQZsCtj_2nfVrgvPHSLQ5S15ENI88lf3XzwHJYLiDtYpZJ-aLYYFG7zuRb0NV0Lz3y_NkRk10e8VDntsbCP/s1600/git1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;103&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSaLJUneagglX9FDh260u5lfZrdZfFNL8iqHuLOzXVA39O666wHdQZsCtj_2nfVrgvPHSLQ5S15ENI88lf3XzwHJYLiDtYpZJ-aLYYFG7zuRb0NV0Lz3y_NkRk10e8VDntsbCP/s200/git1.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Applications and repositories are listed:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: -webkit-auto;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju1ZINuJntRxZcMMLDGzvwL8qlCVft5GgGjiG3Yn6ytTfMcLNUZY5dSRG9dts_M0xMtILYvb6Aea-HedBOMTcsVsEue2Dsz7gm6UWyxacheJZy3pzU_8j0MQ7mvWycrFvt6mjv/s1600/zc2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;89&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju1ZINuJntRxZcMMLDGzvwL8qlCVft5GgGjiG3Yn6ytTfMcLNUZY5dSRG9dts_M0xMtILYvb6Aea-HedBOMTcsVsEue2Dsz7gm6UWyxacheJZy3pzU_8j0MQ7mvWycrFvt6mjv/s320/zc2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbggnkdz062uMxeVjlMH1fLSyyonVlXyn3XFso3uGuNsY23uj-_e82KsbmoT4R0UQJ7-KtnqCjLdiCUjKBls6lNvCoZQqEllLJ1oaY7TK4lAYn8NmO9R4Y3re32gJd9dyGfW8k/s1600/git2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbggnkdz062uMxeVjlMH1fLSyyonVlXyn3XFso3uGuNsY23uj-_e82KsbmoT4R0UQJ7-KtnqCjLdiCUjKBls6lNvCoZQqEllLJ1oaY7TK4lAYn8NmO9R4Y3re32gJd9dyGfW8k/s200/git2.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Social activities are available for developers who want/need&amp;nbsp;continuous&amp;nbsp;and fast feedback&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bNGB0kYwOtGSI0Yu52XNgtuWsUERF66oLFO51jYrrHB8Vx4G5WlqGU9Yk07kCpu-biUksoJ_cfSlRae0DbS2pafof9zlYxK1G7fRhaQ3nXCxBxaSoPb0xNi5MCOS8lDMsigl/s1600/zc3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2bNGB0kYwOtGSI0Yu52XNgtuWsUERF66oLFO51jYrrHB8Vx4G5WlqGU9Yk07kCpu-biUksoJ_cfSlRae0DbS2pafof9zlYxK1G7fRhaQ3nXCxBxaSoPb0xNi5MCOS8lDMsigl/s400/zc3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB2RFrNi72NRbgocRnvaMxcEV379xUfvWUsVUQImsGQQ6y3iu2pFRvNHCGG7JEXg091dReiDoKqi5LcAosKVTs0zKos4DrfSlprKt25IdVWlBxlJUz0MBE1HYDm4qndCc3vkRz/s1600/git3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;37&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB2RFrNi72NRbgocRnvaMxcEV379xUfvWUsVUQImsGQQ6y3iu2pFRvNHCGG7JEXg091dReiDoKqi5LcAosKVTs0zKos4DrfSlprKt25IdVWlBxlJUz0MBE1HYDm4qndCc3vkRz/s400/git3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
If you are interested in more information about specific aspect of the solution, share it here and I will answer you.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/5566987114763644629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/5566987114763644629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/5566987114763644629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/5566987114763644629'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/better-together-github-and-zend.html' title='Better Together - Github and Zend Developer Cloud'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwUQ2u_jRnReScRzWtmrE1WU8VvQoNAKPn2Q4jNjzHFibovrboyUeWvhTqiGP9wxz7sP3BCva7_JtGukJyUCfohhCokSi_FeGbbU5TTh6GClJm3Xe6FqcvftV7rQ2S2I_Y5Te2/s72-c/zc1.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Santa Clara, CA, USA</georss:featurename><georss:point>37.3541079 -121.9552356</georss:point><georss:box>37.3036509 -122.0341996 37.404564900000004 -121.8762716</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3100630104267323768</id><published>2011-10-18T08:43:00.000-07:00</published><updated>2011-10-18T08:43:14.713-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zend developer cloud platform sdk"/><title type='text'>Zend Launches Developer Cloud &amp; SDK To Give Developers Access to Web Applications Market</title><content type='html'>&lt;a href=&quot;http://www.zend.com/&quot;&gt;Zend&lt;/a&gt;, The PHP company and the place I work for the past 5 years has &lt;a href=&quot;http://www.zend.com/en/products/server/deployment&quot;&gt;made some significant steps&lt;/a&gt; over the last year to enable Web developers to deliver&amp;nbsp;scalable Web applications.&amp;nbsp;As part of our strategy Zend has been full-steam ahead on creating better ways for Web developers to make application deployed on a self-served container which can be scaled up and&amp;nbsp;down which have been traditionally difficult areas for PHP developers to execute effectively.&lt;br /&gt;
&lt;br /&gt;
In May the &lt;a href=&quot;http://www.zend.com/server&quot;&gt;Zend Server&lt;/a&gt; team has published a major update to the product with the ability&amp;nbsp;to create application packages&amp;nbsp;that consist of source code, metadata and scripts,&amp;nbsp;and of course deploy applications on any number of servers. At about the same time, my team has worked to deliver tools supporting these capabilities.&lt;br /&gt;
&lt;br /&gt;
Today, Zend is adding the remaining piece, again utilizing its current product line. The company today announced that it is releasing the &lt;a href=&quot;http://my.phpcloud.com/&quot;&gt;Zend Developer Cloud&lt;/a&gt;&amp;nbsp;and a software development kit (SDK) called &lt;a href=&quot;http://zend-sdk.googlecode.com/&quot;&gt;Zend SDK&lt;/a&gt; to enable Web developer build their applications on a robust platform in a very short time. This is of interest for the very reason that this service is given for free by Zend.&lt;br /&gt;
&lt;br /&gt;
When it comes to entering the PHP applications market like &lt;a href=&quot;http://www.wordpress.org/&quot;&gt;Wordpress&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/&quot;&gt;Drupal&lt;/a&gt;, &lt;a href=&quot;http://www.magentocommerce.com/&quot;&gt;Magento&lt;/a&gt;, &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt; apps, developers are met with a number of obstacles, including environment requirements and unstructured development tools. The advantage then, of Zend′s new platform and SDK is that now developers have streamlined workflows to develop their applications.&lt;br /&gt;
&lt;br /&gt;
To demonstrate how easy it is to create Web applications with the new tools, I created a GitHub repository for a #zendcon tweeter channel &amp;nbsp;&lt;a href=&quot;https://github.com/zendcon/hellotweet&quot;&gt;https://github.com/zendcon/hellotweet&lt;/a&gt;&amp;nbsp;and made it available on my container at&amp;nbsp;&lt;a href=&quot;http://royganor.my.phpcloud.com/zendcon/&quot;&gt;http://royganor.my.phpcloud.com/zendcon/&lt;/a&gt;&amp;nbsp;in about a couple of minutes.&lt;br /&gt;
&lt;br /&gt;
Stay tune for more posts and information about this news.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;background: black; clear: both; text-align: center;&quot;&gt;
&lt;img border=&quot;0&quot; src=&quot;http://static.phpcloud.com/images/phpcloud-logo-transparency-with-TM.png&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3100630104267323768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3100630104267323768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3100630104267323768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3100630104267323768'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/10/zend-launches-developer-cloud-sdk-to.html' title='Zend Launches Developer Cloud &amp; SDK To Give Developers Access to Web Applications Market'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total><georss:featurename>Santa Clara, CA, USA</georss:featurename><georss:point>37.3541079 -121.9552356</georss:point><georss:box>37.3036509 -122.0341996 37.404564900000004 -121.8762716</georss:box></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3219666547322240364</id><published>2011-09-28T07:58:00.000-07:00</published><updated>2011-09-28T07:58:22.814-07:00</updated><title type='text'>Zend Studio 9 Early Access build #262 now available</title><content type='html'>In a &lt;a href=&quot;http://goo.gl/jVDCl&quot;&gt;previous post&lt;/a&gt; I demoed how Zend Studio 9 is going to make Web application development much easier and faster.
I am pleased to announce that the Early Access (build #262) is now available so early adopters can put their hands on and tell us about their experience with the new product.&lt;br /&gt;
&lt;br /&gt;
Feel free to post your feedback here or in &lt;a href=&quot;http://forums.zend.com/&quot;&gt;Zend Studio forum&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://beta.zend.com/studio-eclipse/9.0.0/ZendStudio-9.0.0.msi&quot;&gt;For Windows &lt;/a&gt; (212 Mb)  &lt;br /&gt;
&lt;a href=&quot;http://beta.zend.com/studio-eclipse/9.0.0/ZendStudio-without-JRE-9.0.0.msi&quot;&gt;For Windows without JRE&lt;/a&gt; (182Mb) &lt;br /&gt;
&lt;a href=&quot;http://beta.zend.com/studio-eclipse/9.0.0/ZendStudio-9.0.0.dmg&quot;&gt;For Mac&lt;/a&gt; (172Mb) &lt;br /&gt;
&lt;a href=&quot;http://beta.zend.com/studio-eclipse/9.0.0/ZendStudio-9.0.0-x86.tar.gz&quot;&gt;For Linux 32-bit&lt;/a&gt; (173Mb) &lt;br /&gt;
&lt;a href=&quot;http://beta.zend.com/studio-eclipse/9.0.0/ZendStudio-9.0.0-x86_64.tar.gz&quot;&gt;For Linux 64-bit&lt;/a&gt; (176Mb) </content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3219666547322240364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3219666547322240364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3219666547322240364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3219666547322240364'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/09/zend-studio-9-early-access-build-262.html' title='Zend Studio 9 Early Access build #262 now available'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-7925584055949422908</id><published>2011-09-27T08:18:00.000-07:00</published><updated>2011-09-27T08:18:05.214-07:00</updated><title type='text'>Agile Web Applications Development with Eclipse Indigo and Zend Studio 9 Early Access</title><content type='html'>It&#39;s been a couple of weeks now since the release of &lt;a href=&quot;http://www.eclipse.org/indigo&quot;&gt;Eclipse Indigo&lt;/a&gt; and other Application Servers IDEs based on it.&amp;nbsp;Now, it&#39;s time for the Eclipse PDT and Zend Studio team to refresh their products with great features that &amp;nbsp;lots of Web developers will find useful such as &lt;a href=&quot;http://www.github.com/&quot;&gt;Github&lt;/a&gt; support, &lt;a href=&quot;http://www.zend.com/products/server/deployment&quot;&gt;Application deployment&lt;/a&gt; support, better formatting and source editing tools for PHP and JS developers.&lt;br /&gt;
&lt;br /&gt;
In this short screen cast you will find a quick review of the features available for the developers working with it.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/TnqcKIdJQps&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;
&lt;br/&gt;
Stay tune and wait for the official release which is going to happen soon.
</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/7925584055949422908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/7925584055949422908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7925584055949422908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/7925584055949422908'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/09/agile-web-applications-development-with.html' title='Agile Web Applications Development with Eclipse Indigo and Zend Studio 9 Early Access'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/TnqcKIdJQps/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-9032282406520040799</id><published>2011-09-14T06:05:00.000-07:00</published><updated>2011-09-18T10:27:32.718-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git github zend sdk server"/><title type='text'>&amp;quot;git clone&amp;quot; and &amp;quot;application deploy&amp;quot; - Perfect Match</title><content type='html'>It&#39;s amazing, you work on a pretty cool project for a couple of months now and you find out that little has been posted about it. &lt;br /&gt;
So here it is... meet &lt;a href=&quot;http://goo.gl/s8yv8&quot;&gt;Zend SDK&lt;/a&gt;. There are many interesting ideas behind this SDK but in this post I am going to focus on how to get started with it. &lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;So... what is Zend SDK?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you build a Web Application or even a CMS Web site in PHP you probably have asked yourself a couple of times what best practices should I use to develop, publish and discover applications written in PHP. Amazingly, in most modern platforms like Java, Ruby, Flash, Android and iOS it is common to find a dominant set of tools and workflows to streamline development processes. Things like creating application resources, deploying applications, configuring application hosts and even creating a repository of applications that allows others to discover it. However for several reasons PHP developers don&#39;t have one way to do such things, just as an example take a look at the famous PHP applications, frameworks and CMSs solutions in the market. This is exactly where the SDK is aiming.&lt;br /&gt;
&lt;blockquote&gt;
&lt;i&gt;Zend SDK includes a variety of tools that help you create, develop, publish and discover PHP Web applications.&lt;/i&gt;&lt;/blockquote&gt;
Hence, you can find command line tool, Eclipse plugin, Hudson/Jenkins, Phing, Ant and other tools in our target environments. &lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;Step 1: Clone your application from a Git repository&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
First thing first, you will need to fetch the application source code and prepare it for the target environment, to do so you can use the &quot;clone project&quot; command line. With this command a project from a git repository is cloned to your local machine and additional deployment descriptor resource is added that will assist you with hosting this application on targets.&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;zend clone project -r https://ganoro@github.com/ganoro/ExampleProject.git&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdPLTxj6EnuplmsFEzcshgwBO9H3GgoOsEZ19x3ALSB9qZKFzN3fSsWBAvdL7KiURZOv6eJ7Vkk2WhpOcrAYkZsVtavMcEiWmfj2u87vn4zAH4Q_6pR64Y6Vjgd_UBgJf2qlu/s1600/github.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdPLTxj6EnuplmsFEzcshgwBO9H3GgoOsEZ19x3ALSB9qZKFzN3fSsWBAvdL7KiURZOv6eJ7Vkk2WhpOcrAYkZsVtavMcEiWmfj2u87vn4zAH4Q_6pR64Y6Vjgd_UBgJf2qlu/s640/github.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively you can create a local empty project based on the MVC of Zend Framework by clicking&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;zend create project -n helloworld&lt;/pre&gt;
&lt;/blockquote&gt;
If you have already fetched your project (with SVN, CVS or other source control version) you can just update the project with the files required to help you with the deployment process:&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;zend update project -d &lt;/pre&gt;
&lt;/blockquote&gt;
for more information on project management, read this &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/ManagingProjects&quot;&gt;wiki&lt;/a&gt; page which goes over the alternatives and provides extra details about the possible arguments of these commands. If you haven&#39;t installed the SDK go to &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/InstallSDK&quot;&gt;this page&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;Step 2: Add a remote target&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This is the easy part, you will need a target that will host your applications. I assume you installed &lt;a href=&quot;http://www.zend.com/en/products/server/&quot;&gt;Zend Server 5.5&lt;/a&gt; and it is accessible by your machine. If not, you will need to install it either locally or on a remote machine.&lt;br /&gt;
&lt;br /&gt;
For example adding a remote target with address 10.1.2.34 with a given secret key is possible by&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;zend add target -h http://10.1.2.34 -k sdk.roy -s cc14b445ad6ed9041d936b7f363a8e5a525275d3960dbb373f35e97e2abcdab2 &lt;/pre&gt;
&lt;/blockquote&gt;
This command line will add a new target to the list with the specified API key, for more details on API keys see &lt;a href=&quot;http://files.zend.com/help/Zend-Server/working_with_api_keys.htm&quot;&gt;this page&lt;/a&gt;. After installing this target you can use the list target and list applications to see the results:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjihul6MD28cmLGKNktzgFlcxPoNZK7uz4aGHEca07bpjrDDj-99uFs4IP4C6AioLunvnIZkRivctQRgt-Zz-7uYPm4vHZYyJsvdmJ8JGYitZoJZ4YzXwWNUSU6oH7ACVCeOMBG/s1600/zs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjihul6MD28cmLGKNktzgFlcxPoNZK7uz4aGHEca07bpjrDDj-99uFs4IP4C6AioLunvnIZkRivctQRgt-Zz-7uYPm4vHZYyJsvdmJ8JGYitZoJZ4YzXwWNUSU6oH7ACVCeOMBG/s1600/zs.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output for a listing command is (read more on targets management &lt;a href=&quot;http://code.google.com/p/zend-sdk/wiki/ManagingTargets&quot;&gt;here&lt;/a&gt;):&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;royganor@ubuntu:~$ zend list targets -s
Available Zend Targets:
id: 0
	Host: https://10.1.2.34
	Key: Zend 	Status: connected
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;Step 3: Deploy your application&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now that your application is ready and your target is configured properly, we can go directly to the fun part. deploying you application to the host.&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;royganor@ubuntu:~$ zend deploy application&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;Step 4: Test it!&lt;/span&gt;&lt;br /&gt;
Now you are ready to see if the application deployed successfully by running a stats command or just going to the browser and address the application URL.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic1XF8Knm7Bgx_U3CFKPWmTvHX4y1Nt4C5PA2yrLbCFMTMClgjegDhC9lvHsGoBDyAPKj-VQfTdhglqIlp1_Mq8ucJv7-9Y3Tr4Mo_9oZrC7T-bJRW-qGpg9Q_DFqkqdJOA9Kt/s1600/hw.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic1XF8Knm7Bgx_U3CFKPWmTvHX4y1Nt4C5PA2yrLbCFMTMClgjegDhC9lvHsGoBDyAPKj-VQfTdhglqIlp1_Mq8ucJv7-9Y3Tr4Mo_9oZrC7T-bJRW-qGpg9Q_DFqkqdJOA9Kt/s400/hw.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;royganor@ubuntu:~$ zend list applications
Id:                     67
Application Name:       drupal
User Application Name:  http://default-server/ExampleProject
Base URL:               http://&lt;default-server&gt;/ExampleProject
Installed Location:     /home/royganor/.apps/http/__default__/0/ExampleProject/1.0.0
Status:                 deployed
Servers:
	id:               0
	Deployed Version: 1.0.0
	Status:           deployed
Deployed Versions:	1.0.0
&lt;/default-server&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 24px; font-weight: bold;&quot;&gt;Step 5: What&#39;s next?&lt;/span&gt;&lt;br /&gt;
In next posts more interesting aspects of the SDK will be covered like creating repositories and publishing your applications to others.As usual if you want to. Till next time, I will really appreciate your feedback on &lt;a href=&quot;http://code.google.com/p/zend-sdk/&quot;&gt;Zend SDK&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://code.google.com/p/zend-sdk/logo?cct=1312462528&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://code.google.com/p/zend-sdk/logo?cct=1312462528&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/9032282406520040799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/9032282406520040799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/9032282406520040799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/9032282406520040799'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/09/git-clone-and-application-deploy.html' title='&amp;quot;git clone&amp;quot; and &amp;quot;application deploy&amp;quot; - Perfect Match'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdPLTxj6EnuplmsFEzcshgwBO9H3GgoOsEZ19x3ALSB9qZKFzN3fSsWBAvdL7KiURZOv6eJ7Vkk2WhpOcrAYkZsVtavMcEiWmfj2u87vn4zAH4Q_6pR64Y6Vjgd_UBgJf2qlu/s72-c/github.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-3693643549037966246</id><published>2011-05-21T13:42:00.000-07:00</published><updated>2011-05-22T02:58:40.961-07:00</updated><title type='text'>Windows Registry API for Windows (plus 64-bit)</title><content type='html'>Lately I was required to provide a solution that needs access to the Windows Registry Keys. I could easily use the command line tools for this end (reg export or something like this). For some reason I found several glitches with this method, mainly around performance and parsing incompatibilities. So I decided to use this library JNIRegistry - &quot;Windows Registry API Native Interface&quot; (http://www.trustice.com/java/jnireg/index.shtml).&lt;br /&gt;&lt;br /&gt;Problem is that it is only compatible with 32 bit and if you are under 64 bit Java, it won&#39;t be any good for you. So I had to compile this JNIRegistry library for 64bit. I used Visual Studio 2010 with the Microsoft SDKs 7.1 to compile it with x86_64 compiler. It was a damn nice adventure...&lt;br /&gt;&lt;br /&gt;So if you get this error message &quot;ICE_JNIRegistry.dll: Can&#39;t load IA 32-bit .dll on a AMD 64-bit platform&quot; you should probably use the second one here:&lt;br /&gt;&lt;br /&gt;1. &lt;a href=&quot;http://zend-sdk.googlecode.com/svn/trunk/org.zend.sdk/lib/x86/ICE_JNIRegistry.dll&quot;&gt;ICE_JNIRegistry.dll for 32 bit&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;2. &lt;a href=&quot;http://zend-sdk.googlecode.com/svn/trunk/org.zend.sdk/lib/x86_64/ICE_JNIRegistry.dll&quot;&gt;ICE_JNIRegistry for 64bit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;a href=&quot;http://zend-sdk.googlecode.com/svn/trunk/org.zend.sdk/lib/registry.jar&quot;&gt;The JNIRegistry library jar&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Enjoy ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EDIT: one thing I found while using this library under 64bit. you will need to add the &quot;WOW6432node&quot; child if you look for a software-type key. See this article from MS &lt;a href=&quot;http://support.microsoft.com/kb/896459&quot;&gt;http://support.microsoft.com/kb/896459&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/3693643549037966246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/3693643549037966246' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3693643549037966246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/3693643549037966246'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/05/windows-registry-api-for-windows-plus.html' title='Windows Registry API for Windows (plus 64-bit)'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-2006593388225638741</id><published>2011-05-03T00:09:00.000-07:00</published><updated>2011-05-03T05:11:06.606-07:00</updated><title type='text'>Project Planning Thoughts on Flash Builder for PHP 4.5</title><content type='html'>Wow! it was a real pleasure to take part in and lead the release of &lt;a href=&quot;http://www.zend.com/en/products/studio/flash-builder-for-php/&quot;&gt;Adobe Flash Builder for PHP product&lt;/a&gt;. FBPHP is actually an &lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;-based product that includes both Flash Builder and Zend Studio components and supports the development process of Web and Mobile applications that require server/client communication. It can be a real time saver for startups and large scale companies as it streamlines the process of designers, interactive designers and server side developers in a joint product by Adobe and Zend.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following two tutorials provide a great overview of how much this product is useful and fun:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Web Application Development - &lt;a href=&quot;http://files.zend.com/help/Flash-Builder-for-PHP/Getting-Started/Web/build_a_web_(php)_application.htm&quot;&gt;http://goo.gl/EOw2d&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mobile Application Development - &lt;a href=&quot;http://files.zend.com/help/Flash-Builder-for-PHP/Getting-Started/Mobile/build_a_mobile_(php)_application.htm&quot;&gt;http://goo.gl/fRkDt&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;I would like to give a quick glance on what was required and achieved during the last 4 months, the team obstacles and some tasks repository analysis.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Project Goals&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Provide an integrated solution to speed the development of Flex and PHP applications for the web or for mobile&lt;/li&gt;&lt;li&gt;Lower the barrier to entry for getting set up to use Flash Builder and Zend Studio together via an easy installation process&lt;/li&gt;&lt;li&gt;Streamline the process for creating Flex and PHP projects that are related to one another&lt;/li&gt;&lt;li&gt;Improve the data connectivity workflow for connecting Flex apps to PHP services&lt;/li&gt;&lt;li&gt;Enable developers to debug client-side Flex code and server-side PHP code simultaneously &lt;/li&gt;&lt;li&gt;Meet a tight schedule and integration deadlines for both Adobe Flash Builder and Zend Studio teams.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Quality&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Features tested – Installation, Serialization, Flex Web/PHP Applications incl. run/debug, Flex Mobile/PHP Application incl. run/debug, Introspection, Remote PHP Server Support, Zend Studio regression&lt;/li&gt;&lt;li&gt;Platforms tested – Windows 7 32/64 bit , Vista 32/64 bit , Windows XP SP3 , MAC OSX 10.6&lt;/li&gt;&lt;li&gt;PHP Servers tested – Zend Server v5.1, MAMP and XAMP&lt;/li&gt;&lt;li&gt;Browsers tested – Firefox , Internet Explorer , Safari, Chrome&lt;/li&gt;&lt;li&gt;Devices tested – Motorola Droid 2, Samsung Galaxy S&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Bug Repository Analysis&lt;/h2&gt;Powered by 6 developers and 4 quality engineers this project had an overall of 700 issues in the system including tasks, sub tasks, bugs, features and improvements. We had to go through a triage and privatization process on a daily basis and create a weekly process which enables short DEV2QA cycles. The result (below) shows that we had an intense two months of development and 2 months of quality work until we actually started the release cycle that took about a month. The release cycle gave us the ability to stabilize our product quality and make sure we have no misunderstanding with the integration level with Adobe and with the product managers of the product.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://farm6.static.flickr.com/5061/5683389822_1ecf3e4ba3.jpg&quot; border=&quot;0&quot; alt=&quot;Created vs. Resolved&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;h2&gt;Pre-release Advisory Team&lt;/h2&gt;&lt;/div&gt;&lt;span&gt;&lt;ul&gt;&lt;li&gt;177 registered participants, 10-12 very active forum-posters.&lt;/li&gt;&lt;li&gt;&amp;gt; 400 posts to prerelease forums.&lt;/li&gt;&lt;li&gt;&amp;gt; 25 good quality bugs logged.&lt;/li&gt;&lt;li&gt;Most issues either fixed or had a workaround and a few enhancements suggested for future releases&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Takeaways&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Write your requirements and invest time in polishing and updating the docs - it&#39;s not a waste of time. It can take a month and people can start building the building blocks, but to have the solution ready on time you must have a document that represents what you are going to implement from beginning to the end. &lt;/li&gt;&lt;li&gt;Plan a one month quality term, this will significantly improve your predication to deliver a high-quality product. It will not reduce the stress around release cycle but it will reduce the risk in hitting the final date. During this month, developers are not allowed to contribute code to the project unless there is a specific requirement for that.&lt;/li&gt;&lt;li&gt;Our advisory team was very helpful, it is more than important to be responsive and just listen to what they are saying. You are not smarter than they are.&lt;/li&gt;&lt;li&gt;Create a positive spirit in the team and set goals that makes sense to all people.   &lt;/li&gt;&lt;/ul&gt;Thanks to Adobe Flash Builder teams that was very communicative and helpful and showed us the way when integration failed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/2006593388225638741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/2006593388225638741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/2006593388225638741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/2006593388225638741'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/05/project-planning-thoughts-on-flash.html' title='Project Planning Thoughts on Flash Builder for PHP 4.5'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm6.static.flickr.com/5061/5683389822_1ecf3e4ba3_t.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36941363.post-1471205102814893943</id><published>2011-03-13T09:09:00.000-07:00</published><updated>2011-03-13T10:11:43.723-07:00</updated><title type='text'>Easter Egg for Zend/PHP Developers</title><content type='html'>One among &lt;a href=&quot;http://static.zend.com/topics/ZS-510-ReleaseNotes-20110309.txt&quot;&gt;many new interesting Zend Server 5.1 features&lt;/a&gt; is an open &quot;RESTful Web API that allows automation of the management and deployment of Zend Server and Zend Server Cluster Manager, and integration with other Zend or 3rd party software&quot;. It basically provides an easy way to control your deployment of Web Servers remotely and set it up correctly for your application when you scale up and down. For example one can remotely configure new Web application server, reset or even build a fully functional cluster by utilizing this new open API.&lt;br /&gt;&lt;br /&gt;Since most of the configuration and deployment tools these days have a Java-based plugins mechanism (such as Jenkins / Eclipse) I thought it would be cool if there will be a way to extend these tools with some of the new Web API features. I am proud to introduce &lt;a href=&quot;http://code.google.com/p/zend-webapi/&quot;&gt;Zend WebAPI project&lt;/a&gt; that is hosted in Google Code. Zend Web API SDK for Java provides a Java API for Zend Server infrastructure services, making it even easier for developers to build applications that tap into the scalable, and reliable Zend Server product.&lt;br /&gt;&lt;br /&gt;You can find a &lt;a href=&quot;http://code.google.com/p/zend-webapi/wiki/GettingStartedGuide&quot;&gt;getting started page&lt;/a&gt; that explains how to work with this library. This tutorial is based on the following steps:&lt;br /&gt;1. Signing up for Zend Web API Services&lt;br /&gt;2. Getting your Zend Web API Security Credentials&lt;br /&gt;3. View Your Zend Web API Security Credentials&lt;br /&gt;4. Using the Zend Web API SDK for Java&lt;br /&gt;5. To run a sample you can use this code:&lt;br /&gt;&lt;br /&gt;&lt;pre style=&quot;color:#000000;background:#ffffff;&quot;&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#7f9fbf; font-weight:bold; &quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; Create the credential object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; */&lt;/span&gt;&lt;br /&gt;WebApiCredentials credentials = new BasicCredentials(KEY_NAME, SECRET_KEY)&lt;span style=&quot;color:#808030; &quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#7f9fbf; font-weight:bold; &quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; Creates the Web API client object&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#800000; font-weight:bold; &quot;&gt;final&lt;/span&gt; WebApiClient webApiClient = new WebApiClient(credentials, HOST)&lt;span style=&quot;color:#808030; &quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#7f9fbf; font-weight:bold; &quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; Retrieve system info&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; */&lt;/span&gt;&lt;br /&gt;SystemInfo systemInfo = webApiClient.getSystemInfo()&lt;span style=&quot;color:#808030; &quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#7f9fbf; font-weight:bold; &quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; Print license info from retrieved system info&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color:#3f5fbf; &quot;&gt; */&lt;/span&gt;&lt;br /&gt;System.out.println(&quot;License order number:&quot; + systemInfo.getLicenseInfo().getOrderNumber())&lt;span style=&quot;color:#808030; &quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I am really anxious to see what tools we will built on top of these open API that can make a difference in the world of high availability demand from the market.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href=&quot;http://twitter.com/shevron&quot;&gt;Shahar Evron (@shevron)&lt;/a&gt;  who has guided me through the API aspects!&lt;br /&gt;&lt;br /&gt;If you find this useful I would be happy to get some feedback and even new contribution!&lt;br /&gt;&lt;br /&gt;As an example for utilizing this library I created an Eclipse plugin that is used as a &quot;remote controller&quot; for your Zend Server &lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://code.google.com/p/zend-webapi&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 355px; height: 167px;&quot; src=&quot;http://farm6.static.flickr.com/5131/5519536239_4cbc2088bb.jpg&quot; border=&quot;0&quot; alt=&quot;For more details click here&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://ganoro.blogspot.com/feeds/1471205102814893943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/36941363/1471205102814893943' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1471205102814893943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36941363/posts/default/1471205102814893943'/><link rel='alternate' type='text/html' href='http://ganoro.blogspot.com/2011/03/easter-egg-for-zendphp-developers.html' title='Easter Egg for Zend/PHP Developers'/><author><name>Roy Ganor</name><uri>http://www.blogger.com/profile/10470159818677369634</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9absODWyEUoMEZBlP60CrRqf6ozhteZ6RMPzmPH1Tq4ywC3lifhfv1SZeSvlHIW84wxpJ0KIb_bIz5cupNGTyMVbQqwcgDsW-KYdAaGUMcXECcOS92iV6fxQj7CtnYw/s220/roy.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm6.static.flickr.com/5131/5519536239_4cbc2088bb_t.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>